#pragma once #include #define macintosh #include "sdk_hdrs/CompilerMapping.h" #include "sdk_hdrs/DropInCompilerLinker.h" #ifdef __cplusplus extern "C" { #endif /********************************/ /* OS Garbage */ typedef struct OSPathSpec { char s[256]; } OSPathSpec; typedef struct OSNameSpec { char s[64]; } OSNameSpec; typedef struct OSSpec { OSPathSpec path; OSNameSpec name; } OSSpec; typedef struct OSHandle { void *addr; unsigned long used; unsigned long size; } OSHandle; typedef struct { OSSpec spec; OSHandle hand; unsigned char loaded; unsigned char changed; unsigned char writeable; } OSFileHandle; // assumed name /********************************/ /* Option Fuckery */ #ifdef __MWERKS__ #pragma options align=packed #endif typedef struct PARAM_T { char which; char flags; char *myname; struct PARAM_T *next; } PARAM_T; typedef struct MASK_T { char which; char flags; char *myname; PARAM_T *next; char size; unsigned long ormask; unsigned long andmask; void *num; } MASK_T; typedef struct STRING_T { char which; char flags; char *myname; PARAM_T *next; short maxlen; unsigned char pstring; char *str; } STRING_T; typedef struct SET_T { char which; char flags; char *myname; PARAM_T *next; char size; unsigned long value; char *num; } SET_T; typedef struct SETSTRING_T { char which; char flags; char *myname; PARAM_T *next; char *value; char pstring; void *var; } SETSTRING_T; typedef struct GENERIC_T { char which; char flags; char *myname; PARAM_T *next; int (*parse)(const char *opt, void *var, const char *pstr, int flags); void *var; char *help; } GENERIC_T; typedef struct SETTING_T { char which; char flags; char *myname; PARAM_T *next; int (*parse)(const char *a, const char *b); // TODO name these args char *valuename; } SETTING_T; typedef struct TOGGLE_T { char which; char flags; char *myname; PARAM_T *next; char size; unsigned long mask; void *num; } TOGGLE_T; typedef struct NUM_T { char which; char flags; char *myname; PARAM_T *next; char size; char fit; unsigned long lo; unsigned long hi; void *num; } NUM_T; typedef struct FILEPATH_T { char which; char flags; char *myname; PARAM_T *next; char fflags; char *defaultstr; void *filename; int maxlen; } FILEPATH_T; typedef struct IFARG_T { char which; char flags; char *myname; PARAM_T *next; PARAM_T *parg; char *helpa; PARAM_T *pnone; char *helpn; } IFARG_T; typedef struct ONOFF_T { char which; char flags; char *myname; PARAM_T *next; unsigned char *var; } ONOFF_T; typedef struct OFFON_T { char which; char flags; char *myname; PARAM_T *next; unsigned char *var; } OFFON_T; typedef struct FTYPE_T { char which; char flags; char *myname; PARAM_T *next; unsigned long *fc; unsigned char iscreator; } FTYPE_T; typedef struct OptionList { char *help; int flags; struct Option **list; } OptionList; typedef struct Option { char *names; int avail; PARAM_T *param; OptionList *sub; OptionList *conflicts; char *help; } Option; enum { HELPFLAGS_1 = 1, HELPFLAGS_IGNORED = 2, HELPFLAGS_OBSOLETE = 4, HELPFLAGS_DEPRECATED = 8, HELPFLAGS_SECRET = 0x10, HELPFLAGS_MEANINGLESS = 0x20, HELPFLAGS_COMPATIBLE = 0x40, HELPFLAGS_NORMAL = 0x80, // andmask = 0xE? HELPFLAGS_SPACES = 0x100, HELPFLAGS_TOOL = 0x200, HELPFLAGS_TOOL_THIS = 0x400, HELPFLAGS_TOOL_OTHER = 0x800, HELPFLAGS_TOOL_BOTH = 0xC00, HELPFLAGS_1000 = 0x1000, HELPFLAGS_2000 = 0x2000, HELPFLAGS_USAGE = 0x4000, HELPFLAGS_8000 = 0x8000, HELPFLAGS_10000 = 0x10000, HELPFLAGS_20000 = 0x20000, HELPFLAGS_40000 = 0x40000, HELPFLAGS_80000 = 0x80000, HELPFLAGS_100000 = 0x100000, HELPFLAGS_200000 = 0x200000, HELPFLAGS_400000 = 0x400000, HELPFLAGS_700000 = 0x700000, HELPFLAGS_800000 = 0x800000, HELPFLAGS_801828 = 0x801828, HELPFLAGS_1000000 = 0x1000000, HELPFLAGS_2000000 = 0x2000000, HELPFLAGS_4000000 = 0x4000000, HELPFLAGS_8000000 = 0x8000000, HELPFLAGS_10000000 = 0x10000000, HELPFLAGS_20000000 = 0x20000000, HELPFLAGS_40000000 = 0x40000000, HELPFLAGS_80000000 = 0x80000000 }; enum { OTF_GLOBAL = 1, OTF2 = 2, OTF_CASED = 4, OTF_OBSOLETE = 8, OTF_SUBSTITUTED = 0x10, OTF_DEPRECATED = 0x20, OTF_TOOL_LINKER = 0x40, OTF_TOOL_DISASSEMBLER = 0x80, OTF_TOOL_COMPILER = 0x100, OTF_TOOL_MASK = OTF_TOOL_LINKER | OTF_TOOL_DISASSEMBLER | OTF_TOOL_COMPILER, OTF200 = 0x200, OTF400 = 0x400, OTF700 = 0x700, OTF_IGNORED = 0x800, OTFC00 = 0xC00, OTF_SECRET = 0x1000, OTF2000 = 0x2000, OTF_COMPATIBILITY = 0x4000, OTF8000 = 0x8000, OTF10000 = 0x10000, OTF20000 = 0x20000, OTF40000 = 0x40000, OTF_WARNING = 0x80000, OTF_SLFLAGS_8 = 0x100000, OTF_SLFLAGS_10 = 0x200000, OTF_SLFLAGS_20 = 0x400000, OTF_SLFLAGS_MASK = OTF_SLFLAGS_8 | OTF_SLFLAGS_10 | OTF_SLFLAGS_20, OTF_MEANINGLESS = 0x800000, OTF_ALL_HIDDEN_BY_DEFAULT = OTF_OBSOLETE | OTF_DEPRECATED | OTF_IGNORED | OTF_SECRET | OTF_MEANINGLESS, OTF1000000 = 0x1000000, OTF2000000 = 0x2000000, OTF4000000 = 0x4000000, OTF8000000 = 0x8000000, OTF10000000 = 0x10000000, OTF20000000 = 0x20000000, OTF40000000 = 0x40000000, OTF80000000 = 0x80000000 }; enum { PARAMWHICH_None = 0, PARAMWHICH_FTypeCreator = 1, PARAMWHICH_FilePath = 2, PARAMWHICH_Number = 3, PARAMWHICH_String = 4, PARAMWHICH_Id = 5, PARAMWHICH_Sym = 6, PARAMWHICH_OnOff = 7, PARAMWHICH_OffOn = 8, PARAMWHICH_Mask = 9, PARAMWHICH_Toggle = 0xA, PARAMWHICH_Set = 0xB, PARAMWHICH_SetString = 0xC, PARAMWHICH_Generic = 0xD, PARAMWHICH_IfArg = 0xE, PARAMWHICH_Setting = 0xF, PARAMWHICH_MAX = 0x10 }; enum { PARAMFLAGS_1 = 1, PARAMFLAGS_2 = 2, PARAMFLAGS_3 = 3, PARAMFLAGS_4 = 4, PARAMFLAGS_8 = 8, PARAMFLAGS_10 = 0x10, PARAMFLAGS_12 = 0x12 }; enum { PARAMPARSEFLAGS_0 = 0, PARAMPARSEFLAGS_1 = 1, PARAMPARSEFLAGS_2 = 2, PARAMPARSEFLAGS_4 = 4, PARAMPARSEFLAGS_8 = 8, PARAMPARSEFLAGS_10 = 0x10, PARAMPARSEFLAGS_20 = 0x20, PARAMPARSEFLAGS_40 = 0x40, PARAMPARSEFLAGS_80 = 0x80, PARAMPARSEFLAGS_100 = 0x100 }; enum { SLFLAGS_1 = 1, SLFLAGS_2 = 2, SLFLAGS_4 = 4, // displays =... SLFLAGS_8 = 8, // displays [no] -- produces e.g. [no]err[or] | [no]iserr[or], [no]implicit[conv] SLFLAGS_10 = 0x10, // displays [-] SLFLAGS_20 = 0x20, // displays [no-] SLFLAGS_40 = 0x40 }; enum { LISTFLAGS_NONE = 0, LISTFLAGS_2 = 2, LISTFLAGS_4 = 4, LISTFLAGS_COMPILER = 0x100, LISTFLAGS_LINKER = 0x200, LISTFLAGS_DISASSEMBLER = 0x400, LISTFLAGS_TOOL_MASK = LISTFLAGS_COMPILER | LISTFLAGS_LINKER | LISTFLAGS_DISASSEMBLER }; #ifdef __MWERKS__ #pragma options align=reset #endif struct IDEAccessPath { FSSpec pathSpec; unsigned char recursive; long subdirectoryCount; FSSpec *subdirectories; }; struct IDEAccessPathList { long userPathCount; struct IDEAccessPath *userPaths; long systemPathCount; struct IDEAccessPath *systemPaths; unsigned char alwaysSearchUserPaths; unsigned char convertPaths; }; #ifdef __MWERKS__ #pragma options align=mac68k #endif typedef struct CWObjectFlags { short version; long flags; const char *objFileExt; const char *brsFileExt; const char *ppFileExt; const char *disFileExt; const char *depFileExt; const char *pchFileExt; CWDataType objFileCreator; CWDataType objFileType; CWDataType brsFileCreator; CWDataType brsFileType; CWDataType ppFileCreator; CWDataType ppFileType; CWDataType disFileCreator; CWDataType disFileType; CWDataType depFileCreator; CWDataType depFileType; } CWObjectFlags; #ifdef __MWERKS__ #pragma options align=reset #endif struct CW_BasePluginCallbacks { void (*cbGetFileInfo)(); void (*cbFindAndLoadFile)(); void (*cbGetFileText)(); void (*cbReleaseFileText)(); void (*cbGetSegmentInfo)(); void (*cbGetOverlay1GroupInfo)(); void (*cbGetOverlay1Info)(); void (*cbGetOverlay1FileInfo)(); void (*cbReportMessage)(); void (*cbAlert)(); void (*cbShowStatus)(); void (*cbUserBreak)(); void (*cbGetNamedPreferences)(); void (*cbStorePluginData)(); void (*cbGetPluginData)(); void (*cbSetModDate)(); void (*cbAddProjectEntry)(); void (*cbCreateNewTextDocument)(); void (*cbAllocateMemory)(); void (*cbFreeMemory)(); void (*cbAllocMemHandle)(); void (*cbFreeMemHandle)(); void (*cbGetMemHandleSize)(); void (*cbResizeMemHandle)(); void (*cbLockMemHandle)(); void (*cbUnlockMemHandle)(); void *cbInternal[8]; void (*cbGetTargetName)(); void (*cbCacheAccessPathList)(); void (*cbPreDialog)(); void (*cbPostDialog)(); void (*cbPreFileAction)(); void (*cbPostFileAction)(); void (*cbCheckoutLicense)(); void (*cbCheckinLicense)(); void (*cbResolveRelativePath)(); }; struct CWPluginPrivateContext { long request; long apiVersion; void *shellContext; void *pluginStorage; FSSpec projectFile; FSSpec outputFileDirectory; long shellSignature; long pluginType; long numFiles; long numOverlayGroups; short callbackOSError; short pluginOSError; CWIDEInfo *shellInfo; struct IDEAccessPathList *accessPathList; long dontEatEvents; struct FSSpec *targetDataDirectorySpec; long reserved[17]; struct CW_BasePluginCallbacks *callbacks; }; // Pref panels #ifdef __MWERKS__ #pragma options align=mac68k #endif typedef struct PCmdLine { short version; short state; short stages; short toDisk; short outNameOwner; unsigned char dryRun; unsigned char debugInfo; short verbose; unsigned char showLines; unsigned char timeWorking; unsigned char noWarnings; unsigned char warningsAreErrors; unsigned short maxErrors; unsigned short maxWarnings; short msgStyle; unsigned char noWrapOutput; unsigned char stderr2stdout; unsigned char noCmdLineWarnings; } PCmdLine; typedef struct PCmdLineCompiler { short version; unsigned char noSysPath; unsigned char noFail; short includeSearch; char linkerName[64]; char objFileExt[15]; char brsFileExt[15]; char ppFileExt[15]; char disFileExt[15]; char depFileExt[15]; char pchFileExt[15]; CWDataType objFileCreator; CWDataType objFileType; CWDataType brsFileCreator; CWDataType brsFileType; CWDataType ppFileCreator; CWDataType ppFileType; CWDataType disFileCreator; CWDataType disFileType; CWDataType depFileCreator; CWDataType depFileType; unsigned char compileIgnored; unsigned char relPathInOutputDir; unsigned char browserEnabled; unsigned char depsOnlyUserFiles; char outMakefile[256]; char forcePrecompile; unsigned char ignoreMissingFiles; unsigned char printHeaderNames; char sbmState; char sbmPath[256]; unsigned char canonicalIncludes; unsigned char keepObjects; } PCmdLineCompiler; typedef struct PCmdLineLinker { short version; unsigned char callPreLinker; unsigned char callPostLinker; unsigned char keepLinkerOutput; unsigned char callLinker; } PCmdLineLinker; typedef struct PCmdLineEnvir { short version; short cols; short rows; unsigned char underIDE; } PCmdLineEnvir; typedef struct PBackEnd { short version; unsigned char structalignment; unsigned char tracebacktables; unsigned char processor; unsigned char readonlystrings; unsigned char profiler; unsigned char fpcontract; unsigned char schedule; unsigned char peephole; unsigned char processorspecific; unsigned char altivec; unsigned char vrsave; unsigned char autovectorize; unsigned char usebuiltins; unsigned char pic; unsigned char dynamic; unsigned char common; unsigned char implicit_templates; unsigned char reserved[3]; } PBackEnd; typedef struct PDisassembler { short version; unsigned char showcode; unsigned char extended; unsigned char mix; unsigned char nohex; unsigned char showdata; unsigned char showexceptions; unsigned char showsym; unsigned char shownames; } PDisassembler; typedef struct PMachOLinker { short version; unsigned char linksym; unsigned char symfullpath; unsigned char suppresswarn; unsigned char linkmap; unsigned char multisymerror; unsigned char whatfileloaded; unsigned char whyfileloaded; unsigned char use_objectivec_semantics; char undefinedsymbols; char readonlyrelocs; char reserved_value1; char reserved_value2; short exports; short reserved_short1; unsigned long currentversion; unsigned long compatibleversion; long reserved_long1; char mainname[64]; unsigned char prebind; unsigned char dead_strip; unsigned char twolevel_namespace; unsigned char strip_debug_symbols; } PMachOLinker; typedef struct PMachOProject { short version; short type; unsigned char outfile[64]; long filecreator; long filetype; long stacksize; long stackaddress; unsigned long reserved1; unsigned long reserved2; unsigned long reserved3; unsigned long reserved4; unsigned long reserved5; unsigned long reserved6; unsigned long reserved7; unsigned long reserved8; unsigned long reserved9; unsigned long reserved10; unsigned long reserved11; unsigned long reserved12; unsigned long reserved13; unsigned long reserved14; unsigned long reserved15; unsigned long reserved16; unsigned long reserved17; unsigned long reserved18; unsigned long reserved19; unsigned long reserved20; unsigned char flatrsrc; unsigned char filler1; unsigned char filler2; unsigned char filler3; unsigned char separateflatfile[64]; unsigned char installpath[256]; } PMachOProject; typedef struct { short version; unsigned char userSetCreator; unsigned char userSetType; unsigned char gPrintMapToStdOutput; unsigned char mapfilename[256]; unsigned char symfilename[256]; } PCLTExtras; #ifdef __MWERKS__ #pragma options align=reset #endif typedef struct CWCommandLineArgs { int argc; char **argv; char **envp; } CWCommandLineArgs; typedef struct VersionInfo { unsigned short major; unsigned short minor; unsigned short patch; unsigned short build; } VersionInfo; typedef struct CLPluginInfo { unsigned long plugintype; unsigned long language; long dropinflags; char *version; unsigned char storeCommandLine; } CLPluginInfo; typedef struct ToolVersionInfo { char *company; char *product; char *tool; char *copyright; char *version; } ToolVersionInfo; // may not actually be named this struct ParseOptsType { CWPluginContext context; char helpKey[64]; long helpFlags; unsigned short ioCols; unsigned short ioRows; CWCommandLineArgs *args; ToolVersionInfo *toolVersion; int numPlugins; CLPluginInfo *plugins; int numPanels; char **panelNames; unsigned long cpu; unsigned long os; char lastoutputname[256]; long currentSegment; long currentOverlayGroup; long currentOverlay; int possibleFiles; int userSpecifiedFiles; int unusedFiles; unsigned char hadAnyOutput; unsigned char hadErrors; unsigned char showHelp; unsigned char underIDE; unsigned char alwaysUsePaths; unsigned char noOptions; unsigned char printedVersion; unsigned char passingArgs; unsigned char disToFile; unsigned char ppToFile; unsigned char initBefore; unsigned char weakImport; unsigned char mergeIntoOutput; unsigned char success; unsigned char ignoreUnknown; unsigned char unused[2]; }; // assumed name typedef struct CLState { int argc; const char **argv; CWDataType cpu; CWDataType os; CWDataType plugintype; CWDataType language; CWDataType style; OSSpec programPath; const char *programName; short numWarnings; short numErrors; Boolean pluginDebug; Boolean userBreak; Boolean reachedWarningThreshold; Boolean reachedErrorThreshold; OSSpec makefileSpec; OSPathSpec sbmPathSpec; OSHandle browseHandle; const char *stdoutBase; int appendToStdoutBase; } CLState; typedef struct OSFileTypeMapping { CWDataType mactype; const char *magic; char length; const char *mimetype; char executable; // not sure why this is rearranged } OSFileTypeMapping; typedef struct OSFileTypeMappingList { short numMappings; const OSFileTypeMapping *mappings; } OSFileTypeMappingList; typedef struct BasePluginCallbacks { short (*main)(); short (*GetDropInFlags)(const DropInFlags **flags, long *flagsSize); short (*GetDisplayName)(const char **displayName); short (*GetDropInName)(const char **dropInName); short (*GetPanelList)(const CWPanelList **panelList); short (*GetFamilyList)(const CWFamilyList **familyList); short (*GetHelpInfo)(const CWHelpInfo **helpInfo); short (*GetVersionInfo)(const VersionInfo **versionInfo); short (*GetFileTypeMappings)(const OSFileTypeMappingList **mappingList); } BasePluginCallbacks; typedef struct CompilerLinkerPluginCallbacks { short (*GetTargetList)(const struct CWTargetList **targetList); short (*GetDefaultMappingList)(); short (*Unmangle)(); short (*BrSymbolEntryPoint)(); short (*GetObjectFlags)(); short (*WriteObjectFile)(); } CompilerLinkerPluginCallbacks; typedef struct ParserPluginCallbacks { short (*SupportsPlugin)(); short (*SupportsPanels)(); } ParserPluginCallbacks; typedef struct { char *name; void *ptr; long size; } PrefDataPanel; // assumed name typedef struct { CWDataType TYPE; CWDataType LANG; CWDataType CPU; CWDataType OS; int numPrefPanels; char **prefPanels; char *toolInfo; char *copyright; int numOptionLists; OptionList **optionLists; int numPrefDataPanels; PrefDataPanel *prefDataPanels; int (*PreParse)(); // sig? int (*MidParse)(); // sig? int (*PostParse)(); // sig? } ParserTool; // assumed name typedef struct PrefPanel { // assumed name char *name; Handle data; Handle workData; struct PrefPanel *next; } PrefPanel; // assumed name // CLAccessPaths typedef struct Paths { struct Path **array; unsigned short capacity; unsigned short count; } Paths; // assumed name typedef struct Frameworks { struct Framework **array; unsigned short capacity; unsigned short count; } Frameworks; // assumed name typedef struct Path { OSPathSpec *spec; Paths *subpaths; int x8; short xC; } Path; // assumed name typedef struct Framework { OSSpec frameworkSpec; OSPathSpec name; OSPathSpec version; Path *containingPath; Boolean flag344; } Framework; // assumed name // CLFiles typedef struct File { struct File *next; int index; // TODO fill me up } File; typedef struct Files { File *files; int count; } Files; // assumed name typedef struct VFile { char name[32]; Handle hand; struct VFile *next; } VFile; // assumed name // CLOverlays typedef struct Overlay { char name[256]; int *fileIDList; int fileCount; int fileCapacity; struct Overlay *next; } Overlay; // assumed name typedef struct OvlGroup { char name[256]; CWAddr64 addr; Overlay *overlays; Overlay *lastOverlay; int overlayCount; struct OvlGroup *next; } OvlGroup; // assumed name typedef struct Overlays { OvlGroup *groups; OvlGroup *lastGroup; } Overlays; // assumed name // CLSegs typedef struct Segment { char name[32]; short attributes; } Segment; // assumed name typedef struct Segments { Segment **array; unsigned short capacity; unsigned short count; } Segments; // assumed name // CLDependencies typedef struct Incls { struct Target *target; // ... Paths *paths; } Incls; // assumed name typedef struct Deps { int x0; int x4; int x8; Incls *incls; } Deps; // assumed name // CLTarg typedef struct Target { int count0; int count4; int count8; int countC; CWTargetInfo *targetInfo; struct { // not sure how much stuff exactly is part of this struct Segments segments; Overlays overlays; } linkage; int x28; Files files; Files pchs; Incls incls; Paths sysPaths; Paths userPaths; CWDataType language; CWDataType cpu; CWDataType os; char name[64]; struct Plugin *preLinker; struct Plugin *linker; struct Plugin *postLinker; unsigned long preLinkerFlags; unsigned long linkerFlags; unsigned long postLinkerFlags; OSPathSpec cwd; VFile *virtualFiles; struct Target *next; } Target; // assumed name typedef struct Plugin { BasePluginCallbacks *cb; CompilerLinkerPluginCallbacks *cl_cb; ParserPluginCallbacks *pr_cb; void *context; char *versionInfoASCII; struct Plugin *next; } Plugin; typedef struct Token { int x0; void *x4; } Token; /********************************/ /* UMain.c */ extern int main(int argc, const char **argv); extern int RegisterResource(const char *name, short index, void *data); extern int RegisterStaticPlugin(const BasePluginCallbacks *cb); extern int RegisterStaticCompilerLinkerPlugin(const BasePluginCallbacks *cb, void *b); extern int RegisterStaticParserPlugin(const BasePluginCallbacks *cb, void *b); extern void SetBuildTarget(CWDataType cpu, CWDataType os); extern void SetParserType(CWDataType style); extern void SetPluginType(CWDataType language, CWDataType plugintype); extern int CmdLine_Initialize(int argc, const char **argv, const char *buildDate, const char *buildTime); extern int CmdLine_Driver(); extern int CmdLine_Terminate(int code); /********************************/ /* UCLTMain.c */ extern void Main_PreParse(int *pArgc, char ***pArgv); extern void Main_PassSpecialArgs(void *unk1, void *unk2); extern int Main_Initialize(int argc, const char **argv); extern int Main_Terminate(int code); extern int Main_Driver(); /********************************/ /* Resources.c */ /********************************/ /* ?? CL Errors */ //static void CLGetErrorString(short errid, char *buffer); //static void CLMessageReporter(int kind, short errid, va_list ap); extern void CLReportError(short errid, ...); extern void CLReportWarning(short errid, ...); extern void CLReport(short errid, ...); extern void CLReportOSError(short errid, long err, ...); extern void CLReportCError(short errid, long err, ...); extern void CLInternalError(const char *filename, int linenum, const char *format, ...); extern void CLFatalError(const char *format, ...); /********************************/ /* ?? Res */ extern void Res_Initialize(); extern void Res_AddResource(const char *name, short id, const void *data); extern const char *Res_GetResource(short listIndex, short strId); extern void Res_Cleanup(); /********************************/ /* CLPlugins.c */ //static void GetToolVersionInfo(); extern const ToolVersionInfo *Plugin_GetToolVersionInfo(); //static const char *Plugin_GetDisplayName(Plugin *pl); extern const char *Plugin_GetDropInName(Plugin *pl); extern VersionInfo *Plugin_GetVersionInfo(Plugin *pl); extern const char *Plugin_GetVersionInfoASCII(Plugin *pl); extern DropInFlags *Plugin_GetDropInFlags(Plugin *pl); extern CWDataType Plugin_GetPluginType(Plugin *pl); extern const CWTargetList *Plugin_CL_GetTargetList(Plugin *pl); extern const CWPanelList *Plugin_GetPanelList(Plugin *pl); extern const CWExtMapList *Plugin_CL_GetExtMapList(Plugin *pl); extern const OSFileTypeMappingList *Plugin_GetFileTypeMappingList(Plugin *pl); extern const CWObjectFlags *Plugin_CL_GetObjectFlags(Plugin *pl); extern Boolean Plugin_MatchesName(Plugin *pl, const char *name); extern Boolean Plugin_CL_MatchesTarget(Plugin *pl, CWDataType cpu, CWDataType os, Boolean flag); extern Boolean Plugins_CL_HaveMatchingTargets(Plugin *a, Plugin *b, Boolean flag); //static CL_MatchesExtMapping(CWExtensionMapping *em, CWDataType type, const char *extension, Boolean flag); extern Boolean Plugin_CL_MatchesFileType(Plugin *pl, CWDataType type, const char *extension, Boolean flag); extern Boolean Plugin_MatchesType(Plugin *pl, CWDataType plugintype, CWDataType edit_language, Boolean flag); extern Boolean Plugin_Pr_MatchesPlugin(Plugin *pl, void *unk1, void *unk2, void *unk3); // fixme extern Boolean Plugin_Pr_MatchesPanels(Plugin *pl, void *unk1, void *unk2); // fixme extern Boolean Plugin_CL_WriteObjectFile(Plugin *pl, FSSpec *srcfss, FSSpec *outfss, CWDataType creator, CWDataType filetype, Handle data); extern Boolean Plugin_CL_GetCompilerMapping(Plugin *pl, CWDataType type, const char *extension, CompilerMappingFlags *flags); //static Boolean SupportedPlugin(Plugin *pl, const char **errmsg); //static Boolean VerifyPanels(Plugin *pl); extern Plugin *Plugin_New(const BasePluginCallbacks *cb, const CompilerLinkerPluginCallbacks *cl_cb, const ParserPluginCallbacks *pr_cb); extern void Plugin_Free(Plugin *pl); extern int Plugin_VerifyPanels(Plugin *pl); extern void Plugins_Init(); extern void Plugins_Term(); extern int Plugins_Add(Plugin *pl); extern Plugin *Plugins_MatchName(Plugin *first, const char *name); extern Plugin *Plugins_CL_MatchTarget(Plugin *first, CWDataType cpu, CWDataType os, CWDataType plugintype, CWDataType edit_language); extern Plugin *Plugins_CL_MatchFileType(Plugin *first, CWDataType type, const char *extension, Boolean flag); extern Plugin *Plugins_GetPluginForFile(Plugin *first, CWDataType plugintype, CWDataType cpu, CWDataType os, CWDataType type, const char *extension); extern Plugin *Plugins_GetLinker(Plugin *first, CWDataType cpu, CWDataType os); extern Plugin *Plugins_GetPreLinker(Plugin *first, CWDataType cpu, CWDataType os); extern Plugin *Plugins_GetPostLinker(Plugin *first, CWDataType cpu, CWDataType os); extern Plugin *Plugins_GetParserForPlugin(...); // TODO fixme args extern Plugin *Plugins_GetCompilerForLinker(Plugin *first, Plugin *linker, CWDataType type, const char *extension, CWDataType edit_language); extern Boolean Plugins_GetPluginList(Plugin *first, int *count, void **list); // TODO fixme define list struct extern Boolean Plugins_GetPrefPanelUnion(Plugin *first, int *count, void **list); // TODO fixme define struct extern Boolean Plugin_AddFileTypeMappings(Plugin *pl, void *unk); extern Boolean Plugins_AddFileTypeMappingsForTarget(Plugin *first, void *unk, CWDataType cpu, CWDataType os); extern short Plugin_Call(Plugin *pl, void *context); /********************************/ /* ?? parser_cb */ /********************************/ /* CLIO.c */ /********************************/ /* CLToolExec.c */ /********************************/ /* OS TU 1 */ typedef struct uOSTypePair { // unknown name short a; short b; } uOSTypePair; extern const char *OS_GetErrText(int errnum); extern int OS_InitProgram(int *pArgc, const char ***pArgv); extern int OS_TermProgram(); extern int OS_Create(const OSSpec *spec, const uOSTypePair *type); extern int OS_Status(const OSSpec *spec); extern int OS_GetFileType(const OSSpec *spec, uOSTypePair *type); extern int OS_SetFileType(const OSSpec *spec, const uOSTypePair *type); extern int OS_GetFileTime(const OSSpec *spec, time_t *ctime, time_t *mtime); extern int OS_SetFileTime(const OSSpec *spec, const time_t *ctime, const time_t *mtime); extern int OS_Open(const OSSpec *spec, unsigned short mode, int *pRef); extern int OS_Write(int ref, const void *data, long *pLen); extern int OS_Read(int ref, void *data, long *pLen); extern int OS_Seek(int ref, unsigned short how, long offset); extern int OS_Tell(int ref, long *pOffset); extern int OS_Close(int ref); extern int OS_GetSize(int ref, long *pSize); extern int OS_SetSize(int ref, long size); extern int OS_Delete(const OSSpec *spec); extern int OS_Rename(const OSSpec *a, const OSSpec *b); extern int OS_Mkdir(const OSSpec *spec); extern int OS_Rmdir(const OSPathSpec *spec); extern int OS_Chdir(const OSPathSpec *spec); extern int OS_GetCWD(OSPathSpec *spec); extern int OS_Execute(); // TODO figure out the args for this properly extern int OS_IsLegalPath(const char *str); extern int OS_IsFullPath(const char *str); extern char *OS_GetDirPtr(OSPathSpec *spec); //extern int OS_CompactPath(const char *spec, char *dest); extern int OS_EqualPath(const char *a, const char *b); extern int OS_CanonPath(const char *src, char *dest); extern int OS_MakeSpec(const char *path, OSSpec *spec, Boolean *pFlag); extern int OS_MakeFileSpec(const char *path, OSSpec *spec); extern int OS_MakePathSpec(const char *a, const char *b, OSPathSpec *spec); extern int OS_MakeNameSpec(const char *src, OSNameSpec *spec); extern int OS_GetRootSpec(OSPathSpec *spec); extern char *OS_SpecToString(const OSSpec *spec, char *output, int maxlen); extern char *OS_PathSpecToString(const OSPathSpec *spec, char *output, int maxlen); extern char *OS_NameSpecToString(const OSNameSpec *spec, char *output, int maxlen); extern int OS_SizeOfPathSpec(const OSPathSpec *spec); extern int OS_SizeOfNameSpec(const OSNameSpec *spec); extern int OS_EqualSpec(const OSSpec *a, const OSSpec *b); extern int OS_EqualPathSpec(const OSPathSpec *a, const OSPathSpec *b); extern int OS_EqualNameSpec(const OSNameSpec *a, const OSNameSpec *b); extern int OS_IsDir(const OSSpec *spec); extern int OS_IsFile(const OSSpec *spec); extern int OS_IsLink(const OSSpec *spec); extern int OS_ResolveLink(const OSSpec *src, OSSpec *dest); extern int OS_OpenDir(const OSPathSpec *spec, void *data); // TODO arg type extern int OS_ReadDir(void *data, OSSpec *spec, OSNameSpec *nameSpec, Boolean *pFlag); extern int OS_CloseDir(void *data); // TODO arg type extern long OS_GetMilliseconds(); extern time_t OS_GetTime(time_t *p); extern int OS_NewHandle(unsigned long size, OSHandle *hand); extern int OS_ResizeHandle(OSHandle *hand, unsigned long newSize); extern void *OS_LockHandle(OSHandle *hand); extern void OS_UnlockHandle(OSHandle *hand); extern int OS_FreeHandle(OSHandle *hand); extern int OS_GetHandleSize(OSHandle *hand, unsigned long *pSize); extern void OS_InvalidateHandle(OSHandle *handle); extern Boolean OS_ValidHandle(OSHandle *handle); extern short OS_MacError(int err); extern void OS_TimeToMac(time_t t, unsigned long *pMacTime); extern time_t OS_MacToTime(unsigned long macTime, time_t *p); extern short OS_RefToMac(int ref); extern int OS_MacToRef(short macRef); extern int OS_OpenLibrary(const char *a, int *p); extern int OS_GetLibrarySymbol(void *a, void *b, int *p); extern int OS_CloseLibrary(void *a); extern int OS_LoadMacResourceFork(const OSSpec *spec, void **unkA, void **unkB); extern int OS_IsMultiByte(const char *str, int offset); extern char *strcatn(char *dst, const char *src, int maxlen); extern char *strcpyn(char *dst, const char *src, int maxlen); extern int ustrcmp(const char *a, const char *b); extern int ustrncmp(const char *a, const char *b, int maxlen); /********************************/ /* OS TU 2 */ extern int WildCardMatch(const char *a, const char *b); extern OSSpec *OS_MatchPath(const char *path); extern char *OS_GetFileNamePtr(char *path); extern char *OS_GetDirName(const OSPathSpec *spec, char *buf, int bufsize); extern int OS_MakeSpec2(const char *a, const char *b, OSSpec *spec); extern int OS_MakeSpecWithPath(const char *pathSpec, const char *str, Boolean flag, OSSpec *spec); extern int OS_NameSpecChangeExtension(OSNameSpec *nameSpec, const char *newExt, Boolean flag); extern int OS_NameSpecSetExtension(OSNameSpec *nameSpec, const char *newExt); extern char *OS_CompactPaths(char *str, const char *a, const char *b, int lenmaybe); extern char *OS_SpecToStringRelative(const OSSpec *spec, const OSPathSpec *pathSpec, char *outbuf, int outlen); extern int OS_FindFileInPath(const char *filename, const char *paths, OSSpec *spec); extern int OS_FindProgram(const char *path, OSSpec *spec); extern int OS_CopyHandle(OSHandle *src, OSHandle *dest); extern int OS_AppendHandle(OSHandle *hand, const void *data, long size); /********************************/ /* CLProj.c */ typedef struct Proj { Target *target; OSPathSpec projDir; OSNameSpec projName; } Proj; extern int Proj_Initialize(Proj *proj); extern int Proj_Terminate(Proj *this); /********************************/ /* ?? License */ extern void License_Initialize(); extern void License_Terminate(); extern long License_Checkout(); extern void License_Refresh(); extern void License_Checkin(); extern void License_AutoCheckin(); /********************************/ /* ?? 'x' funcs */ extern void *xmalloc(const char *str, size_t amount); extern void *xcalloc(const char *str, size_t amount); extern void *xrealloc(const char *str, void *curPtr, size_t amount); extern char *xstrdup(const char *str); extern void xfree(void *ptr); /********************************/ /* CLPluginRequests.cpp */ extern Boolean SendParserRequest( Plugin *plugin, Target *target, CWCommandLineArgs *args, CWDataType cpu, CWDataType os, int numPlugin, void *pluginInfo, int numPanels, void *panelNames, void *pluginArgs, void *panelArgs, const char *cmdlineBuildDate, const char *cmdlineBuildTime, ToolVersionInfo *toolVersionInfo ); extern Boolean SendCompilerRequest(Plugin *plugin, File *file, short request); extern Boolean SendTargetInfoRequest(Target *target, Plugin *linker, int flags); extern Boolean SendLinkerRequest(Plugin *plugin, int flags, CWTargetInfo *targetInfo); extern Boolean SendDisassemblerRequest(Plugin *plugin, File *file); extern Boolean SendInitOrTermRequest(Plugin *plugin, Boolean action); /********************************/ /* ?? LM funcs */ extern unsigned long LMGetTicks(); extern unsigned long LMGetTime(); extern short LMGetMemErr(); extern void LMSetMemErr(short err); /********************************/ /* CLFileOps.c */ extern int GetOutputFile(); // TODO args extern int StoreObjectFile(); // TODO args extern int CompileFilesInProject(); extern int LinkProject(); /********************************/ /* CLPrefs.c */ extern PrefPanel *PrefPanel_New(const char *name, void *data, long dataSize); extern Handle PrefPanel_GetHandle(PrefPanel *panel); extern int PrefPanel_PutHandle(PrefPanel *panel, Handle handle); extern void Prefs_Initialize(); extern void Prefs_Terminate(); extern Boolean Prefs_AddPanel(PrefPanel *panel); extern PrefPanel *Prefs_FindPanel(const char *name); /********************************/ /* CLTarg.c */ extern Target *Target_New(const char *name, CWDataType cpu, CWDataType os, CWDataType language); extern void Target_Free(Target *target); extern void Targets_Term(Target *targets); extern void Target_Add(Target **targets, Target *targetToAdd); /********************************/ /* CLAccessPaths.c */ extern Path *Path_Init(const OSPathSpec *pathSpec, Path *path); extern Path *Path_New(const OSPathSpec *pathSpec); extern void Path_Free(Path *path); extern Boolean Paths_Initialize(Paths *paths); extern Boolean Paths_Terminate(Paths *paths); //static Boolean Paths_GrowPaths(Paths *paths, unsigned short *pIndex); extern Boolean Paths_AddPath(Paths *paths, Path *path); extern Boolean Paths_InsertPath(Paths *paths, unsigned short index, Path *path); extern Boolean Paths_RemovePath(Paths *paths, unsigned short index); extern Boolean Paths_DeletePath(Paths *paths, unsigned short index); extern Path *Paths_GetPath(Paths *paths, unsigned short index); extern unsigned short Paths_Count(const Paths *paths); extern Boolean Paths_FindPath(const Paths *paths, const Path *path); extern Path *Paths_FindPathSpec(const Paths *paths, const OSPathSpec *pathSpec); //static Boolean GatherRecurse(Paths *paths, Path *path); extern Boolean Paths_GatherRecurse(Paths *paths); extern int Paths_CountRecurse(Paths *paths); //static void CopyRecurseFSS(FSSpec **pFss, Paths *paths, unsigned short *pCount); extern void Paths_CopyRecurseFSS(FSSpec *fss, Paths *paths, unsigned short count); //static Boolean Frameworks_Initialize(Frameworks *frameworks); //static Boolean Frameworks_Grow(Frameworks *frameworks, unsigned short *pIndex); //static Boolean Frameworks_Add(Frameworks *frameworks, Framework *framework); //static Framework *Framework_Init(OSSpec *frameworkSpec, const char *name, const char *version, Framework *framework, Path *containingPath, Boolean flag); //static Framework *Framework_New(OSSpec *frameworkSpec, const char *name, const char *version, Path *containingPath, Boolean flag); //static Boolean CheckForFileInFrameworkDir(char *buf, const char *dir, OSPathSpec *pathSpec, const char *filename); //static Boolean CheckForFileInFramework(char *buf, int fwIndex, const char *filename); extern Boolean MakeFrameworkPath(char *buf, const char *frameworkName, OSPathSpec **pOutputSpec); extern Boolean Frameworks_AddPath(const OSPathSpec *pathSpec); extern Boolean Frameworks_AddFramework(const char *frameworkName, const char *version, Boolean flag); extern void Framework_GetEnvInfo(); extern int Frameworks_GetCount(); extern Framework *Frameworks_GetInfo(int index); /********************************/ /* MacSpecs.c */ // This is pretty much self-contained lol extern OSErr OS_OSPathSpec_To_VolDir(const OSPathSpec *pathSpec, short *pVol, long *pDir); extern OSErr OS_OSSpec_To_FSSpec(const OSSpec *spec, FSSpec *fss); extern OSErr OS_VolDir_To_OSNameSpec(short vol, long dir, OSNameSpec *nameSpec, long *pDir); extern OSErr OS_VolDir_To_OSPathSpec(short vol, long dir, OSPathSpec *pathSpec); extern OSErr OS_FSSpec_To_OSSpec(const FSSpec *fss, OSSpec *spec); extern OSErr OS_GetRsrcOSSpec(const OSSpec *baseSpec, OSSpec *rsrcSpec, Boolean createFlag); /********************************/ /* StringUtils.c */ extern StringPtr _pstrcpy(StringPtr dst, ConstStringPtr src); extern StringPtr _pstrcat(StringPtr dst, ConstStringPtr src); extern StringPtr _pstrcharcat(StringPtr dst, unsigned char c); extern StringPtr pstrncpy(StringPtr dst, ConstStringPtr src, short maxlen); extern StringPtr pstrncat(StringPtr dst, ConstStringPtr src, short maxlen); extern int pstrcmp(ConstStringPtr a, ConstStringPtr b); extern int pstrchr(ConstStringPtr str, char c); extern void c2pstrcpy(StringPtr dst, const char *src); extern void p2cstrcpy(char *dst, ConstStringPtr src); extern char *mvprintf(char *str, size_t size, const char *format, va_list ap); extern char *mprintf(char *str, size_t size, const char *format, ...); extern int HPrintF(Handle hand, const char *format, ...); /********************************/ /* ?? Handle emulation */ typedef struct MacHandle { char *addr; OSHandle hand; } MacHandle; extern OSHandle *OS_PeekMacHandle(MacHandle *mh); //static void FixHandlePtr(MacHandle *mh, char *ptr); extern MacHandle *OS_CreateMacHandle(OSHandle *hand); extern MacHandle *OS_CreateMacHandleDup(MacHandle *mh); extern void OS_DestroyMacHandle(MacHandle *mh, OSHandle *hand); extern OSErr MemError(); extern Handle NewHandle(long byteCount); extern Handle NewHandleClear(long byteCount); extern Handle TempNewHandle(long logicalSize, OSErr *resultCode); extern void DisposeHandle(Handle h); extern void HLock(Handle h); extern void HLockHi(Handle h); extern void HUnlock(Handle h); extern void HPurge(Handle h); extern void HNoPurge(Handle h); extern SInt8 HGetState(Handle h); extern void HSetState(Handle h, SInt8 flags); extern long GetHandleSize(Handle h); extern void SetHandleSize(Handle h, long size); extern OSErr PtrAndHand(const void *ptr1, Handle hand2, long size); extern OSErr PtrToHand(const void *srcPtr, Handle *dstHndl, long size); extern OSErr HandToHand(Handle *theHndl); extern OSErr HandAndHand(Handle hand1, Handle hand2); extern void MoveHHi(Handle h); extern void BlockMove(const void *srcPtr, void *destPtr, long byteCount); extern void BlockMoveData(const void *srcPtr, void *destPtr, long byteCount); extern Ptr NewPtr(long byteCount); extern void DisposePtr(Ptr p); extern Ptr NewPtrClear(long byteCount); extern void DebugStr(ConstStringPtr debuggerMsg); extern OSErr HandleZone(); extern OSErr ApplicationZone(); /********************************/ /* Files.c */ typedef struct FileParamInfo { // i think this is internal, move it once i impl Files.c unsigned long creationDate; unsigned long modifiedDate; long logicalLen; long physicalLen; long rLogicalLen; long rPhysicalLen; long x18; long x1C; unsigned char attrib; } FileParamInfo; // assumed name //static int OS_GetFileParamInfo(const OSSpec *spec, FileParamInfo *info, FInfo *finfo); //static int OS_SetFileParamInfo(const OSSpec *spec, FileParamInfo *info, FInfo *finfo); extern OSErr HCreate(short vRefNum, long dirID, ConstStr255Param fileName, OSType creator, OSType fileType); extern OSErr HOpen(short vRefNum, long dirID, ConstStr255Param fileName, SInt8 permission, short *refNum); extern OSErr HOpenDF(short vRefNum, long dirID, ConstStr255Param fileName, SInt8 permission, short *refNum); extern OSErr HDelete(short vRefNum, long dirID, ConstStr255Param fileName); extern OSErr HRename(short vRefNum, long dirID, ConstStr255Param oldName, ConstStr255Param newName); extern OSErr HGetFInfo(short vRefNum, long dirID, ConstStr255Param fileName, FInfo *fndrInfo); extern OSErr HSetFInfo(short vRefNum, long dirID, ConstStr255Param fileName, const FInfo *fndrInfo); extern OSErr FSpCreate(const FSSpec *spec, OSType creator, OSType fileType, ScriptCode scriptTag); extern OSErr FSpDirCreate(const FSSpec *spec, ScriptCode scriptTag, long *createdDirID); extern OSErr FSpOpenDF(const FSSpec *spec, SInt8 permission, short *refNum); extern OSErr FSpDelete(const FSSpec *spec); extern OSErr FSpRename(const FSSpec *spec, ConstStr255Param newName); extern OSErr FSpGetFInfo(const FSSpec *spec, FInfo *fndrInfo); extern OSErr FSpSetFInfo(const FSSpec *spec, const FInfo *fndrInfo); extern OSErr HGetVol(StringPtr volName, short *vRefNum, long *dirID); extern OSErr HSetVol(ConstStr63Param volName, short vRefNum, long dirID); extern OSErr FlushVol(ConstStr63Param volName, short vRefNum); extern OSErr FSRead(short refNum, long *count, void *buffPtr); extern OSErr FSWrite(short refNum, long *count, const void *buffPtr); extern OSErr FSClose(short refNum); extern OSErr GetEOF(short refNum, long *logEOF); extern OSErr SetEOF(short refNum, long logEOF); extern OSErr GetFPos(short refNum, long *filePos); extern OSErr SetFPos(short refNum, short posMode, long posOff); extern OSErr GetVInfo(short drvNum, StringPtr volName, short *vRefNum, long *freeBytes); extern OSErr PBWriteSync(ParmBlkPtr paramBlock); extern OSErr PBHGetFInfoSync(HParmBlkPtr paramBlock); extern OSErr PBHSetFInfoSync(HParmBlkPtr paramBlock); extern OSErr PBGetCatInfoSync(CInfoPBPtr paramBlock); extern OSErr ResolveAliasFile(FSSpec *theSpec, Boolean resolveAliasChains, Boolean *targetIsFolder, Boolean *wasAliased); extern OSErr FSMakeFSSpec(short vRefNum, long dirID, ConstStr255Param fileName, FSSpec *spec); extern OSErr Allocate(short refNum, long *count); extern StringPtr c2pstr(char *str); extern char *p2cstr(StringPtr str); extern short CharacterByteType(Ptr textBuf, short textOffset, ScriptCode script); extern short CharByte(); extern void GetDateTime(unsigned long *secs); extern Boolean EqualString(ConstStr255Param str1, ConstStr255Param str2, Boolean caseSensitive, Boolean diacSensitive); extern void GetIndString(Str255 theString, short strListID, short index); extern char *getindstring(char *theString, short strListID, short index); extern void NumToString(long theNum, Str255 theString); extern void StringToNum(ConstStr255Param theString, long *theNum); /********************************/ /* MacFileTypes.c */ extern int AddFileTypeMappingList(void *a, void *b); // TODO sig extern void UseFileTypeMappings(void *a); // TODO sig extern OSErr SetMacFileType(const FSSpec *fss, void *a); // TODO sig extern OSErr GetMacFileType(const FSSpec *fss, void *a); // TODO sig /********************************/ /* CLFiles.c */ extern File *File_New(); extern void File_Free(File *file); extern int Files_Initialize(Files *this); extern int Files_Terminate(Files *this); extern int Files_AddFile(Files *this, File *file); extern int Files_InsertFile(Files *this, File *file, int index); extern File *Files_GetFile(Files *this, int filenum); extern File *Files_FindFile(Files *this, OSSpec *spec); extern int Files_Count(Files *this); extern int VFiles_Initialize(VFile **vfiles); extern int VFiles_Terminate(VFile **vfiles); extern VFile *VFile_New(const char *name, Handle data); extern int VFiles_Add(VFile **vfiles, VFile *vfile); extern VFile *VFiles_Find(VFile *vfiles, const char *name); /********************************/ /* CLOverlays.c */ extern int Overlays_Initialize(Overlays *this); extern int Overlays_Terminate(Overlays *this); extern int Overlays_AddOvlGroup(Overlays *this, OvlGroup *grp, int *pIndex); extern OvlGroup *Overlays_GetOvlGroup(Overlays *this, int index); extern int Overlays_CountGroups(Overlays *this); extern int Overlays_AddFileToOverlay(Overlays *this, int groupIndex, int overlayIndex, int fileID); extern Overlay *Overlays_GetOverlayInGroup(Overlays *this, int groupIndex, int overlayIndex); extern int Overlays_GetFileInOverlay(Overlays *this, int groupIndex, int overlayIndex, int fileIndex); extern OvlGroup *OvlGroup_New(const char *name, CWAddr64 addr); extern void OvlGroup_Delete(OvlGroup *grp); extern int OvlGroup_AddOverlay(OvlGroup *this, Overlay *oly, int *pIndex); extern Overlay *OvlGroup_GetOverlay(OvlGroup *this, int index); extern int OvlGroup_CountOverlays(OvlGroup *this); extern Overlay *Overlay_New(const char *name); extern void Overlay_Delete(Overlay *oly); extern int Overlay_AddFile(Overlay *oly, int fileID, int *pIndex); extern int Overlay_GetFile(Overlay *oly, int index); extern int Overlay_CountFiles(Overlay *oly); /********************************/ /* CLSegs.c */ extern Segment *Segment_New(const char *name, unsigned short a); extern void Segment_Free(Segment *segment); extern int Segments_Initialize(Segments *segs); extern int Segments_Terminate(Segments *segs); //static Boolean Segments_GrowSegments(Segments *segments, unsigned short *pIndex); extern int Segments_AddSegment(Segments *segs, Segment *segment, unsigned short *pIndex); extern Boolean Segments_InsertSegment(Segments *segs, unsigned short index, Segment *segment); extern Boolean Segments_DeleteSegment(Segments *segs, unsigned short index); extern Segment *Segments_GetSegment(Segments *segs, unsigned short index); extern unsigned short Segments_Count(const Segments *segs); /********************************/ /* CLDropinCallbacks_V10.cpp */ // TODO /********************************/ /* MacFileTypes.c */ typedef struct OSFileTypeMappingListNode { OSFileTypeMappingList *list; struct OSFileTypeMappingListNode *next; } OSFileTypeMappingListNode; // assumed name extern void OS_AddFileTypeMappingList(OSFileTypeMappingListNode **node, OSFileTypeMappingList *list); extern void OS_UseFileTypeMappings(OSFileTypeMappingListNode *node); extern void OS_MacType_To_OSType(OSType mactype, uOSTypePair *ostype); extern int OS_SetMacFileType(const OSSpec *spec, OSType mactype); extern int OS_GetMacFileTypeMagic(const void *magic, int length, OSType *mactype); extern int OS_GetMacFileType(const OSSpec *spec, OSType *mactype); extern int OS_SetMacFileCreatorAndType(const OSSpec *spec, OSType creator, OSType mactype); /********************************/ /* ?? Handles */ //extern int OS_LoadFileHandle(OSFileHandle *fh); //extern int OS_WriteFileHandle(OSFileHandle *fh); extern int OS_NewFileHandle(const OSSpec *spec, OSHandle *hand, Boolean writeable, OSFileHandle *fh); extern int OS_LockFileHandle(OSFileHandle *fh, Ptr *h, unsigned long *pSize); extern int OS_UnlockFileHandle(OSFileHandle *fh); extern int OS_FreeFileHandle(OSFileHandle *fh); extern void OS_GetFileHandleSpec(const OSFileHandle *fh, OSSpec *spec); /********************************/ /* CLCompilerLinkerDropin_V10.cpp */ // TODO /********************************/ /* CLDependencies.c */ extern int Incls_Initialize(Incls *incls, Target *targ); extern void Incls_Terminate(Incls *incls); // IsSysIncl // MakeInclFileSpec // QuickFindFileInIncls // SameIncl // FindOrAddGlobalInclPath // _FindFileInPath // FindFileInPaths // AddFileToIncls extern int Incls_FindFileInPaths(Incls *incls, ...); // TODO sig extern int Deps_Initialize(Deps *deps, Incls *incls); extern void Deps_Terminate(Deps *deps); extern int Deps_ChangeSpecialAccessPath(OSPathSpec *pathSpec, Boolean flag); extern Path *Deps_GetSpecialAccessPath(); //extern void SetSpecialAccessPathFromIncludeStackTOS(); // FindDepFile // AddDepFile extern int Deps_AddDependency(); // TODO sig // EscapeName extern int Deps_ListDependencies(); // TODO sig /********************************/ /* CLWriteObjectFile.c */ extern Boolean WriteObjectFile(File *file, OSType creator, OSType filetype); extern Boolean WriteBrowseData(File *file); /********************************/ /* CLBrowser.c */ // GetBrowseTableInfoAndLock extern int Browser_Initialize(OSHandle *browsetable); //static int Destroy(OSHandle *hand); extern int Browser_Terminate(OSHandle *browsetable); extern int Browser_SearchFile(OSHandle *browsetable, const char *fullpath, short *pIndex); extern int Browser_SearchAndAddFile(OSHandle *browsetable, const char *fullpath, short *pIndex); //static long CalcDiskSpaceRequirements(...); // needs table type //static int ConvertMemToDisk(...); // needs table type extern int Browser_PackBrowseFile(Handle browsedata, OSHandle *browsetable, OSHandle *hand2); /********************************/ /* ?? Include Cache */ // TODO /********************************/ /* ?? Error */ extern char *GetSysErrText(short code, char *buffer); /********************************/ /* Might be cc-mach-ppc-mw.c? */ extern void GetStaticTarget(CWDataType *cpu, CWDataType *os); extern void GetStaticPluginType(CWDataType *language, CWDataType *plugintype); extern void GetStaticParserPluginType(CWDataType *style); extern int RegisterStaticTargetResources(); extern int RegisterStaticTargetPlugins(); /********************************/ /* Might be ParserGlue-mach-ppc-cc.c? */ extern int RegisterStaticParserToolInfo(); /********************************/ /* Might be cc-mach-ppc.c? */ extern pascal short CWPlugin_GetDropInFlags(const DropInFlags **flags, long *flagsSize); extern pascal short CWPlugin_GetTargetList(const CWTargetList **targetList); extern pascal short CWPlugin_GetDropInName(const char **dropinName); extern pascal short CWPlugin_GetDisplayName(const char **displayName); extern pascal short CWPlugin_GetDefaultMappingList(const CWExtMapList **defaultMappingList); extern pascal short CWPlugin_GetPanelList(const CWPanelList **panelList); //_CmdLine_GetObjectFlags //_CWPlugin_GetVersionInfo //_CWPlugin_GetFileTypeMappings //_Linker_GetDropInFlags //_Linker_GetDropInName //_Linker_GetDisplayName //_Linker_GetPanelList //_Linker_GetTargetList //_Linker_GetDefaultMappingList extern int RegisterStaticCompilerPlugin(); extern int RegisterCompilerResources(); /********************************/ /* libimp-mach-ppc.c */ // some statics here extern int RegisterStaticLibImporterPlugin(); extern int RegisterLibImporterResources(); /********************************/ /* TargetOptimizer-ppc-mach.c */ extern int TargetSetOptFlags(short val, Boolean set); extern void TargetDisplayOptimizationOptions(Handle txt); extern void TargetSetPragmaOptimizationsToUnspecified(); /********************************/ /* OptimizerHelpers.c */ extern int SetPragmaOptimizationsToUnspecified(); extern int SetOptFlags(char *opt, void *str, ...); // two unknown args extern int DisplayOptimizationOptions(); /********************************/ /* Unk name lol */ extern int TargetSetWarningFlags(short val, Boolean set); extern int TargetDisplayWarningOptions(Handle txt); /********************************/ /* WarningHelpers.c */ extern int SetWarningFlags(char *opt, void *str, ...); // two unknown args extern int DisplayWarningOptions(); /********************************/ /* CCompiler.c */ // LOTS OF STUFF /********************************/ /* StaticParserGlue.c */ extern int RegisterStaticParserResources(); extern int RegisterStaticParserPlugins(); /********************************/ /* ParserFace.c */ extern Handle Parser_FindPrefPanel(char *name); extern CWResult Parser_StorePanels(CWPluginContext context); extern short CWParser_GetDropInFlags(const DropInFlags **flags, long *flagsSize); extern short CWParser_GetDropInName(const char **dropinName); extern short CWParser_GetDisplayName(const char **displayName); extern short CWParser_GetPanelList(const CWPanelList **panelList); extern short CWParser_GetTargetList(const CWTargetList **targetList); extern short CWParser_GetVersionInfo(const VersionInfo **versioninfo); extern short Parser_SupportsPlugin(struct CLPluginInfo *pluginfo, CWDataType cpu, CWDataType os, Boolean *isSupported); extern short Parser_SupportsPanels(int numPanels, char **panelNames, Boolean *isSupported); extern short parser_main(CWPluginContext context); extern struct ParseOptsType parseopts; /********************************/ /* ParserHelpers.c */ extern int FindFileInPath(const char *filename, OSSpec *fss); extern char *GetEnvVar(const char *name, Boolean warn, char **match); //static Boolean MatchesExtension(const char *list, const char *filename); extern int Opt_AddAccessPath(const char *opt, void *var, const char *arg); extern int Opt_AddFrameworkPath(const char *opt, void *var, const char *arg); extern int Opt_AddFramework(const char *opt, void *var, const char *arg); extern void ListParseMessage(void *errprint, const char *envvar, short id); // TODO funcptr sig - same as CLPReportWarning_V, CLPReportError_V extern int AddAccessPathList(const char *list, char sep1, char sep2, int source, char *text, Boolean system, long position, Boolean recursive); extern int Opt_FindAndAddFile(const char *opt, void *var, const char *arg); extern int Opt_FindAndAddFileRef(const char *opt, void *var, const char *arg); extern int Opt_AddUnixLibraryFile(const char *opt, void *var, const char *arg); extern int AddFileList(const char *list, char sep1, char sep2, int source, char *text, long position); extern int IsFileInOutputDirectory(const OSSpec *file); extern void GetCFileNameInOutputDirectory(const char *input, char *name, int maxlen); extern void GetPFileNameInOutputDirectory(const char *input, unsigned char *name, int len); extern void AddStringLenToHandle(Handle h, const char *str, int len); extern void AddStringToHandle(Handle h, const char *str); extern int Opt_PrintVersion(const char *opt, void *var, const char *arg); extern void GetFirstSourceFilenameBase(char *buffer, char *defaul); extern int Opt_SavePrefs(const char *opt, void *var, const char *arg); extern int ParseNumber(const char *arg, Boolean emit_error, long *ret, const char **endptr); extern int Opt_MaybeMoveAccessPaths(const char *opt, void *var, const char *arg); /********************************/ /* ToolHelpers.c */ extern int Opt_HandleOutputName(const char *opt, void *, const char *filename); extern int ValidateToolState(Boolean mustHaveFiles); extern void ToolReportMessage(short errid, short type, va_list va); extern void ToolReportWarning(short id, ...); extern void ToolReportError(short id, ...); extern void ToolReportOSError(short id, ...); extern void ToolReportInfo(short id, ...); extern int Opt_DoNotLink(const char *opt, void *var, const char *arg); extern int Opt_IncreaseVerbosity(const char *opt, void *var, const char *arg); extern int Opt_SetStage(const char *opt, void *str, const char *arg, void *unk); // lots of the Opt_ funcs have weird sigs, need to double check them extern int Opt_RedirectStream(const char *opt, void *file, const char *filename); /********************************/ /* ParserHelpers-cc.c */ typedef struct { void *value; const char *pragma; int flags; } Pragma; // assumed name extern int Opt_AddStringToDefines(const char *opt, void *str, const char *param); extern int Opt_DefineSymbol(const char *var, const char *value); extern int Opt_UndefineSymbol(const char *opt, void *, const char *arg); extern int Opt_AddPrefixFile(const char *opt, void *handle, const char *filename); extern int Opt_PragmaTrueFalse(const char *, void *flag, const char *, int flags); extern int Opt_PragmaFalseTrue(const char *, void *flag, const char *, int flags); extern int Opt_PragmaOnOff(const char *, void *flag, const char *arg); extern int Opt_PragmaOffOn(const char *, void *flag, const char *arg); extern int SetupPragmas(const Pragma *pragmas); /********************************/ /* Arguments.c */ typedef struct { short val; char *text; } ArgToken; enum { ATK_0, ATK_1, ATK_2, ATK_3, ATK_4, ATK_5 }; typedef struct { int argc; int nargv; char **argv; } anon0_50; extern void Arg_Init(int theargc, char **theargv); extern void Arg_Terminate(); extern void Arg_Reset(); extern void Arg_Stop(ArgToken *where); extern ArgToken *Arg_PeekToken(); extern ArgToken *Arg_UsedToken(); extern int Arg_IsEmpty(); extern ArgToken *Arg_GetToken(); extern ArgToken *Arg_UndoToken(); extern const char *Arg_GetTokenName(ArgToken *tok); extern const char *Arg_GetTokenText(ArgToken *tok, char *buffer, int maxlen, unsigned char warn); extern void Arg_InitToolArgs(anon0_50 *ta); extern void Arg_AddToToolArgs(anon0_50 *ta, short tokval, char *toktxt); extern void Arg_FinishToolArgs(anon0_50 *ta); extern void Arg_ToolArgsForPlugin(anon0_50 *ta, struct CWCommandLineArgs *args); extern void Arg_FreeToolArgs(anon0_50 *ta); /********************************/ /* ToolHelpers-cc.c */ extern int Opt_DummyLinkerRoutine(const char *opt); extern int Opt_DummyLinkerSettingRoutine(const char *var, const char *val); extern void FinishCompilerTool(); /********************************/ /* IO.c */ extern void ShowTextHandle(const char *description, Handle text); extern void ShowVersion(Boolean decorate); /********************************/ /* Projects.c */ extern int GetFileCount(); extern void SetFileOutputName(long position, short which, char *outfilename); extern int AddFileToProject(OSSpec *oss, short which, char *outfilename, Boolean exists, long position); extern Boolean GetFileInfo(long position, OSSpec *spec, char *plugin); extern int AddAccessPath(const OSPathSpec *oss, short type, long position, Boolean recursive); extern int MoveSystemPathsIntoUserList(); extern void AddVirtualFile(const char *filename, Handle *text); extern void GetOutputFileDirectory(OSPathSpec *dir); extern void SetOutputFileDirectory(const OSPathSpec *dir); extern void AddOverlayGroup(const char *name, CWAddr64 *addr, long *groupnum, long *overlaynum); extern void AddOverlay(long groupnum, const char *name, long *overlaynum); extern void AddSegment(const char *name, short attrs, long *segmentnum); extern void ChangeSegment(long segmentnum, const char *name, short attrs); extern int GetSegment(long segmentnum, char *name, short *attrs); /********************************/ /* Targets.c */ extern int SetParserToolInfo(ParserTool *tool); extern Boolean ParserToolMatchesPlugin(CWDataType type, CWDataType lang, CWDataType cpu, CWDataType os); extern Boolean ParserToolHandlesPanels(int numPanels, const char **panelNames); extern Boolean SetupParserToolOptions(); /********************************/ /* Option.c */ typedef struct { void *first; void *second; } Opt50; typedef struct { Option *opt; char *curopt; } Opt52; typedef struct { union { Opt50 v; OptionList *lst; Opt52 o; char *param; } e; short flags; } Opt48; //static void Option_PushList(OptionList *lst); //static void Option_PushOpt(Option *opt, const char *optname); //static void Option_PopOpt(const char *optname); //static void Option_PopList(); extern void Args_InitStack(); extern int Args_StackSize(); extern void Args_Push(short flags, void *first, void *second); extern Opt48 *Args_Pop(short flags); extern void Args_SpellStack(char *buffer, short flags); extern void Args_AddToToolArgs(anon0_50 *ta); extern void Options_Init(); extern OptionList *Options_GetOptions(); extern void Options_SortOptions(); //static void Options_AddOption(Option *opt); extern int Options_AddList(OptionList *optlst); extern int Options_AddLists(OptionList **optlst); //static void Options_Reset(OptionList *optlst); //static void Option_SpellList(char *buffer, OptionList *conflicts, int flags); extern int Option_ForTool(Option *opt, int which); extern int Option_ThisTool(); extern int Option_ForThisTool(Option *opt); extern int Option_AlsoPassedToTool(Option *opt, int which); extern int Option_AlsoPassedFromThisTool(Option *opt); //static Boolean Option_ContinuesThisLevel(int level, ArgToken *tok); //static Boolean Option_IsEndingThisLevel(int level, ArgToken *tok); //static Boolean Option_IsEndingLevel(int level, ArgToken *tok); extern int Option_Parse(Option *opt, int oflags); //static int Option_MatchString(char *list, char *str, int flags, int *result); //static Option *Option_Lookup(OptionList *search, void *unk, int *flags); //static int Options_DoParse(OptionList *search, int flags); extern int Options_Parse(OptionList *options, int flags); extern int Option_ParseDefaultOption(OptionList *options); extern void Option_ParamError(short id, va_list ap); extern void Option_ParamWarning(short id, va_list ap); extern void Option_OptionError(short id, va_list ap); extern void Option_OptionWarning(short id, va_list ap); extern void Option_Error(short id, ...); extern void Option_Warning(short id, ...); extern int Options_Help(const char *keyword); extern int Option_Help(const char *opt); extern int Options_DisplayHelp(); /********************************/ /* ParserErrors.c */ extern void CLPReportError_V(const char *format, va_list ap); extern void CLPReportWarning_V(const char *format, va_list ap); extern void CLPReport_V(const char *format, va_list ap); extern void CLPStatus_V(const char *format, va_list ap); extern void CLPAlert_V(const char *format, va_list ap); extern void CLPOSAlert_V(const char *format, long err, va_list ap); extern void CLPGetErrorString(short errid, char *buffer); extern void CLPReportError(short errid, ...); extern void CLPReportWarning(short errid, ...); extern void CLPReport(short errid, ...); extern void CLPAlert(short errid, ...); extern void CLPOSAlert(short errid, short err, ...); extern void CLPProgress(short errid, ...); extern void CLPStatus(short errid, ...); extern void CLPFatalError(const char *format, ...); extern char curopt[1024]; /********************************/ /* Utils.c */ // something is weird with these parameters // they're supposed to be just "char"... extern int my_tolower(unsigned char c); extern int my_isdigit(unsigned char c); extern int my_isalpha(unsigned char c); extern int my_isalnum(unsigned char c); extern int my_isxdigit(unsigned char c); extern char *Utils_SpellList(char *list, char *buffer, char opts); extern int Utils_CompareOptionString(const char *a, const char *b, int cased, int sticky); /********************************/ /* Parameter.c */ extern void Param_DescHelp(PARAM_T *param, const char **desc, const char **help, const char **defaul); extern int Param_Compare(PARAM_T *param); extern int Params_Parse(PARAM_T *param, int flags); extern void Param_Error(short id, ...); extern void Param_Warning(short id, ...); /********************************/ /* Help.c */ extern int Help_Option(struct OptionList *lst, struct Option *opt, int subprint, const char *keyword); extern void Help_Options(struct OptionList *lst, int subprint, const char *keyword); extern void Help_Usage(); extern void Help_Null(); extern void Help_Init(); extern void Help_Line(char ch); extern void Help_Term(); /********************************/ /* */ /********************************/ /* */ /********************************/ /* ?? COS */ // static COS_pstrcpy // static COS_pstrcat // static COS_pstrcharcat // static COS_pstrcmp extern Handle COS_NewHandle(long byteCount); extern Handle COS_NewOSHandle(long logicalSize); extern void COS_FreeHandle(Handle handle); extern Boolean COS_ResizeHandle(Handle handle, long newSize); extern long COS_GetHandleSize(Handle handle); extern void COS_LockHandle(Handle handle); extern void COS_LockHandleHi(Handle handle); extern void COS_UnlockHandle(Handle handle); extern int COS_GetHandleState(Handle handle); extern void COS_SetHandleState(Handle handle, int state); extern Boolean COS_IsLockedState(int state); extern char *COS_NewPtr(long byteCount); extern char *COS_NewPtrClear(long byteCount); extern void COS_FreePtr(char *ptr); extern void COS_AppendPtrToHandle(char *ptr1, Handle hand2, long size); extern short COS_GetMemErr(); extern long COS_GetTicks(); extern long COS_GetTime(); extern void COS_GetString(char *buffer, short strListID, short index); extern void COS_GetPString(unsigned char *buffer, short strListID, short index); extern Boolean COS_IsMultiByte(char *buffer, char *str); extern short COS_FileNew(const FSSpec *spec, short *refNum, FourCharCode creator, FourCharCode fileType); extern short COS_FileOpen(const FSSpec *spec, short *refNum); extern short COS_FileGetType(const FSSpec *spec, FourCharCode *fileType); extern short COS_FileGetSize(short refNum, long *logEOF); extern short COS_FileRead(short refNum, void *buffPtr, long count); extern short COS_FileWrite(short refNum, const void *buffPtr, long count); extern short COS_FileGetPos(short refNum, long *filePos); extern short COS_FileSetPos(short refNum, long filePos); extern short COS_FileClose(short refNum); extern void COS_FileSetFSSpec(FSSpec *spec, unsigned char *path); extern short COS_FileMakeFSSpec(short vRefNum, long dirID, unsigned char *fileName, FSSpec *spec); extern short COS_FileMakeFSSpecWithPath(const FSSpec *inputSpec, unsigned char *fileName, FSSpec *spec); extern short COS_FileGetFileInfo(const FSSpec *spec, OSType *creator, OSType *fileType); extern void COS_FileGetFSSpecInfo(const FSSpec *spec, short *vRefNum, long *dirID, unsigned char *fileName); //static void COS_MakePath(short vRefNum, long dirID, char *path); extern void COS_FileGetPathName(char *buffer, const FSSpec *spec, long *mdDat); extern Boolean COS_EqualFileSpec(const FSSpec *a, const FSSpec *b); /********************************/ /* */ // TODO sort me extern Proj *gProj; extern ParserTool *pTool; extern PCmdLine optsCmdLine; extern PCmdLineEnvir optsEnvir; extern PCmdLineCompiler optsCompiler; extern PCmdLineLinker optsLinker; extern CLState clState; /********************************/ /* CmdLineBuildDate.c */ extern char CMDLINE_BUILD_DATE[]; extern char CMDLINE_BUILD_TIME[]; /********************************/ /* MISC */ extern void IO_Terminate(); extern void SetupDebuggingTraps(); extern void AppendArgumentList(void *unk1, void *unk2, const char *arg); extern int (*PrefPanelsChangedCallback)(const char *); extern Boolean systemHandles; extern char *MAINOPTCHAR; extern char *SEPOPTSTR; extern char compat; extern anon0_50 linkargs; #ifdef __cplusplus } #endif