mirror of https://git.wuffs.org/MWCC
202 lines
9.8 KiB
C
202 lines
9.8 KiB
C
|
#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
|