diff options
Diffstat (limited to 'includes/plugin.h')
-rw-r--r-- | includes/plugin.h | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/includes/plugin.h b/includes/plugin.h new file mode 100644 index 0000000..76b17cc --- /dev/null +++ b/includes/plugin.h @@ -0,0 +1,201 @@ +#pragma once +#include "CWPlugins.h" +#include "CWPluginErrors.h" +#include "DropInCompilerLinker.h" + +#ifdef __MWERKS__ +#pragma options align=mac68k +#endif + +#if CWPLUGIN_API == CWPLUGIN_API_MACOS +#define CWFileSpecNotEmpty(specPtr) ((specPtr)->name[0] != 0) +#elif CWPLUGIN_API == CWPLUGIN_API_WIN32 +#define CWFileSpecNotEmpty(specPtr) ((specPtr)->path[0] != 0) +#elif CWPLUGIN_API == CWPLUGIN_API_UNIX +#define CWFileSpecNotEmpty(specPtr) ((specPtr)->path[0] != 0) +#endif + +enum { + CWDROPINPARSERTYPE = CWFOURCHAR('P','a','r','s') +}; + +typedef struct IDEAccessPath { + FSSpec pathSpec; + Boolean recursive; + SInt32 subdirectoryCount; + FSSpec *subdirectories; +} IDEAccessPath; + +typedef struct IDEAccessPathList { + SInt32 userPathCount; + IDEAccessPath *userPaths; + SInt32 systemPathCount; + IDEAccessPath *systemPaths; + Boolean alwaysSearchUserPaths; + Boolean convertPaths; +} IDEAccessPathList; + +enum { + cwAccessPathTypeFlag2 = 2 +}; +typedef struct CWNewAccessPathInfo { + CWFileSpec pathSpec; + SInt32 position; + Boolean recursive; + CWAccessPathType type; +} CWNewAccessPathInfo; + +typedef struct CWTargetInfoV7 { + CWFileSpec outfile; + CWFileSpec symfile; + short linkType; + Boolean canRun; + Boolean canDebug; + Boolean useRunHelperApp; + char reserved1; + CWDataType debuggerCreator; + CWDataType runHelperCreator; + SInt32 reserved2[2]; +} CWTargetInfoV7; + +typedef struct CWEnvVarInfo { + char *name; + char *value; +} CWEnvVarInfo; + +typedef struct CWCommandLineArgs { + int argc; + char **argv; + char **envp; +} CWCommandLineArgs; + +typedef struct ToolVersionInfo { + char *company; + char *product; + char *tool; + char *copyright; + char *version; +} ToolVersionInfo; + +typedef struct CLPluginInfo { + OSType plugintype; + OSType language; + SInt32 dropinflags; + char *version; + Boolean storeCommandLine; +} CLPluginInfo; + +struct CW_BasePluginCallbacks { + CWResult (*cbGetFileInfo)(CWPluginContext, SInt32, Boolean, CWProjectFileInfo *); + CWResult (*cbFindAndLoadFile)(CWPluginContext, const char *, CWFileInfo *); + CWResult (*cbGetFileText)(CWPluginContext, const CWFileSpec *, const char **, SInt32 *, short *); + CWResult (*cbReleaseFileText)(CWPluginContext, const char *); + CWResult (*cbGetSegmentInfo)(CWPluginContext, SInt32, CWProjectSegmentInfo *); + CWResult (*cbGetOverlay1GroupInfo)(CWPluginContext, SInt32, CWOverlay1GroupInfo *); + CWResult (*cbGetOverlay1Info)(CWPluginContext, SInt32, SInt32, CWOverlay1Info *); + CWResult (*cbGetOverlay1FileInfo)(CWPluginContext, SInt32, SInt32, SInt32, CWOverlay1FileInfo *); + CWResult (*cbReportMessage)(CWPluginContext, const CWMessageRef *, const char *, const char *, short, SInt32); + CWResult (*cbAlert)(CWPluginContext, const char *, const char *, const char *, const char *); + CWResult (*cbShowStatus)(CWPluginContext, const char *, const char *); + CWResult (*cbUserBreak)(CWPluginContext); + CWResult (*cbGetNamedPreferences)(CWPluginContext, const char *, CWMemHandle *); + CWResult (*cbStorePluginData)(CWPluginContext, SInt32, CWDataType, CWMemHandle); + CWResult (*cbGetPluginData)(CWPluginContext, SInt32, CWDataType, CWMemHandle *); + CWResult (*cbSetModDate)(CWPluginContext, const CWFileSpec *, CWFileTime *, Boolean); + CWResult (*cbAddProjectEntry)(CWPluginContext, const CWFileSpec *, Boolean, const CWNewProjectEntryInfo *, SInt32 *); + CWResult (*cbCreateNewTextDocument)(CWPluginContext, const CWNewTextDocumentInfo *); + CWResult (*cbAllocateMemory)(CWPluginContext, SInt32, Boolean, void **); + CWResult (*cbFreeMemory)(CWPluginContext, void *, Boolean); + CWResult (*cbAllocMemHandle)(CWPluginContext, SInt32, Boolean, CWMemHandle *); + CWResult (*cbFreeMemHandle)(CWPluginContext, CWMemHandle); + CWResult (*cbGetMemHandleSize)(CWPluginContext, CWMemHandle, SInt32 *); + CWResult (*cbResizeMemHandle)(CWPluginContext, CWMemHandle, SInt32); + CWResult (*cbLockMemHandle)(CWPluginContext, CWMemHandle, Boolean, void **); + CWResult (*cbUnlockMemHandle)(CWPluginContext, CWMemHandle); + void *cbInternal[8]; + CWResult (*cbGetTargetName)(CWPluginContext, char *, short); + CWResult (*cbCacheAccessPathList)(CWPluginContext); + CWResult (*cbPreDialog)(CWPluginContext); + CWResult (*cbPostDialog)(CWPluginContext); + CWResult (*cbPreFileAction)(CWPluginContext, const CWFileSpec *); + CWResult (*cbPostFileAction)(CWPluginContext, const CWFileSpec *); + CWResult (*cbCheckoutLicense)(CWPluginContext, const char *, const char *, SInt32, void *, SInt32 *); + CWResult (*cbCheckinLicense)(CWPluginContext, SInt32); + CWResult (*cbResolveRelativePath)(CWPluginContext, const CWRelativePath *, CWFileSpec *, Boolean); +}; + +struct CWCompilerLinkerCallbacks { + CWResult (*cbCachePrecompiledHeader)(CWPluginContext, const CWFileSpec *, CWMemHandle); + CWResult (*cbLoadObjectData)(CWPluginContext, SInt32, CWMemHandle *); + CWResult (*cbStoreObjectData)(CWPluginContext, SInt32, CWObjectData *); + CWResult (*cbFreeObjectData)(CWPluginContext, SInt32, CWMemHandle); + CWResult (*cbDisplayLines)(CWPluginContext, SInt32); + CWResult (*cbBeginSubCompile)(CWPluginContext, SInt32, CWPluginContext *); + CWResult (*cbEndSubCompile)(CWPluginContext); + CWResult (*cbGetPrecompiledHeaderSpec)(CWPluginContext, CWFileSpec *, const char *); + CWResult (*cbGetResourceFile)(CWPluginContext, CWFileSpec *); + CWResult (*cbPutResourceFile)(CWPluginContext, const char *, const char *, CWFileSpec *); + CWResult (*cbLookUpUnit)(CWPluginContext, const char *, Boolean, const void **, SInt32 *); + CWResult (*cbSBMfiles)(CWPluginContext, short); + CWResult (*cbStoreUnit)(CWPluginContext, const char *, CWMemHandle, CWDependencyTag); + CWResult (*cbReleaseUnit)(CWPluginContext, void *); + CWResult (*cbUnitNameToFileName)(CWPluginContext, const char *, char *); + CWResult (*cbOSErrorMessage)(CWPluginContext, const char *, OSErr); + CWResult (*cbOSAlert)(CWPluginContext, const char *, OSErr); + CWResult (*cbGetModifiedFiles)(CWPluginContext, SInt32 *, const SInt32 **); + CWResult (*cbGetSuggestedObjectFileSpec)(CWPluginContext, SInt32, CWFileSpec *); + CWResult (*cbGetStoredObjectFileSpec)(CWPluginContext, SInt32, CWFileSpec *); + CWResult (*cbGetRuntimeSettings)(CWPluginContext); + CWResult (*cbGetFrameworkCount)(CWPluginContext, SInt32 *); + CWResult (*cbGetFrameworkInfo)(CWPluginContext, SInt32, CWFrameworkInfo *); + CWResult (*cbGetFrameworkSharedLibrary)(CWPluginContext); +}; + +struct CWParserCallbacks { + CWResult (*cbParserAddAccessPath)(CWPluginContext, const CWNewAccessPathInfo *); + CWResult (*cbParserSwapAccessPaths)(CWPluginContext); + CWResult (*cbParserSetNamedPreferences)(CWPluginContext, const char *, CWMemHandle); + CWResult (*cbParserSetFileOutputName)(CWPluginContext, SInt32, short, const char *); + CWResult (*cbParserSetOutputFileDirectory)(CWPluginContext, const CWFileSpec *); + CWResult (*cbParserAddOverlay1Group)(CWPluginContext, const char *, const CWAddr64 *, SInt32 *); + CWResult (*cbParserAddOverlay1)(CWPluginContext, const char *, SInt32, SInt32 *); + CWResult (*cbParserAddSegment)(CWPluginContext, const char *, short, SInt32 *); + CWResult (*cbParserSetSegment)(CWPluginContext, SInt32, const char *, short); +}; + +#ifdef __MWERKS__ +#pragma options align=reset +#endif + +#ifdef __cplusplus +extern "C" { +#endif +CW_CALLBACK CWCheckoutLicense(CWPluginContext context, const char *a, const char *b, SInt32 c, void *d, SInt32 *cookiePtr); +CW_CALLBACK CWCheckinLicense(CWPluginContext context, SInt32 cookie); +CW_CALLBACK CWSecretAttachHandle(CWPluginContext context, Handle handle, CWMemHandle *memHandle); +CW_CALLBACK CWSecretDetachHandle(CWPluginContext context, CWMemHandle memHandle, Handle *handle); +CW_CALLBACK CWSecretPeekHandle(CWPluginContext context, CWMemHandle memHandle, Handle *handle); +CW_CALLBACK CWSecretGetNamedPreferences(CWPluginContext context, const char *prefsname, Handle *prefsdata); + +CW_CALLBACK CWParserGetBuildDate(CWPluginContext context, const char **buildDate, const char **buildTime); +CW_CALLBACK CWParserGetCommandLine(CWPluginContext context, CWCommandLineArgs **args); +CW_CALLBACK CWParserGetTargetInfo(CWPluginContext context, CWDataType *cpu, CWDataType *os); +CW_CALLBACK CWParserGetToolInfo(CWPluginContext context, const ToolVersionInfo **toolVersionInfo); +CW_CALLBACK CWParserGetPlugins(CWPluginContext context, int *numPlugins, const CLPluginInfo **pluginInfo); +CW_CALLBACK CWParserGetPanels(CWPluginContext context, int *numPanels, const char ***panelNames); +CW_CALLBACK CWParserStoreCommandLineForPanel(CWPluginContext context, int index, const CWCommandLineArgs *args); +CW_CALLBACK CWParserStoreCommandLineForPlugin(CWPluginContext context, int index, const CWCommandLineArgs *args); +CW_CALLBACK CWParserAddAccessPath(CWPluginContext context, const CWNewAccessPathInfo *api); +CW_CALLBACK CWParserSwapAccessPaths(CWPluginContext context); +CW_CALLBACK CWParserSetNamedPreferences(CWPluginContext context, const char *panelName, CWMemHandle paneldata); +CW_CALLBACK CWParserSetFileOutputName(CWPluginContext context, SInt32 position, short which, const char *outfilename); +CW_CALLBACK CWParserSetOutputFileDirectory(CWPluginContext context, const CWFileSpec *idefss); +CW_CALLBACK CWParserAddOverlay1Group(CWPluginContext context, const char *name, const CWAddr64 *addr, SInt32 *newGroupNumber); +CW_CALLBACK CWParserAddOverlay1(CWPluginContext context, const char *name, SInt32 groupNumber, SInt32 *newOverlayNumber); +CW_CALLBACK CWParserAddSegment(CWPluginContext context, const char *name, short attrs, SInt32 *newSegmentNumber); +CW_CALLBACK CWParserSetSegment(CWPluginContext context, SInt32 segmentNumber, const char *name, short attrs); +CW_CALLBACK CWParserCreateVirtualFile(CWPluginContext context, const char *name, CWMemHandle text); +CW_CALLBACK CWParserDisplayTextHandle(CWPluginContext context, const char *name, CWMemHandle text); +#ifdef __cplusplus +} +#endif |