summaryrefslogtreecommitdiff
path: root/includes/plugin.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--includes/plugin.h201
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