#ifndef CMDLINE_H #define CMDLINE_H #include "cw_common.h" #include "pref_structs.h" enum { // "Could not get current working directory" CLStr1 = 1, // "Cannot find my executable '%s'" CLStr2 = 2, // "Could not initialize plugin '%s'" CLStr3 = 3, // "The %s '%s' requires functionality not present in the command-line driver." CLStr4 = 4, // "The command-line parser does not support these panels:" CLStr5 = 5, // "\t%s\n" CLStr6 = 6, // "Compiling function: '%s'" CLStr7 = 7, // "Could not write file '%s'" CLStr8 = 8, // "Could not write file '%s' in directory '%s'" CLStr9 = 9, // "Write error on output (errno=%ld)" CLStr10 = 10, // "Current working directory is too long" CLStr11 = 11, // "Unknown filetype '%c%c%c%c', defaulting to '%s'" CLStr12 = 12, // "%s:\ttype %s" CLStr13 = 13, // "Storing output for '%s' in '%s'" CLStr14 = 14, // "Writing text file '%s'" CLStr15 = 15, // "Writing %sobject file '%s'" CLStr16 = 16, // "Writing browse data '%s'" CLStr17 = 17, // "Could not write %s '%s' (error %ld)" CLStr18 = 18, // "Deleting temporary file '%s'" CLStr19 = 19, // "Could not resolve alias for '%s' (error %ld)" CLStr20 = 20, // "%s:\t'%s'%s" CLStr21 = 21, // "File '%s' has browse fileID %d" CLStr22 = 22, // "Can't locate directory '%s'" CLStr23 = 23, // " %8.2f seconds to %s %s%s%s" CLStr24 = 24, // " %8d lines compiled" CLStr25 = 25, // " %8d %s code\n %8d %s init'd data\n %8d %s uninit'd data" CLStr26 = 26, // " %8d total %s code\n %8d total %s init'd data\n %8d total %s uninit'd data" CLStr27 = 27, // "File '%s' is not compilable source, target object data, or command file; ignoring" CLStr28 = 28, // "All specified files were ignored" CLStr29 = 29, // "Compiling: '%s'" CLStr30 = 30, // "Compiling: '%s' with '%s'" CLStr31 = 31, // "Precompiling: '%s'" CLStr32 = 32, // "Precompiling: '%s' with '%s'" CLStr33 = 33, // "Preprocessing: '%s'" CLStr34 = 34, // "Preprocessing: '%s' with '%s'" CLStr35 = 35, // "Finding dependencies: '%s'" CLStr36 = 36, // "Finding dependencies: '%s' with '%s'" CLStr37 = 37, // "Importing: '%s'" CLStr38 = 38, // "Importing: '%s' with '%s'" CLStr39 = 39, // "Linking project" CLStr40 = 40, // "Linking project with '%s'" CLStr41 = 41, // "Pre-linking project" CLStr42 = 42, // "Pre-linking project with '%s'" CLStr43 = 43, // "Post-linking project" CLStr44 = 44, // "Post-linking project with '%s'" CLStr45 = 45, // "Disassembling: '%s'" CLStr46 = 46, // "Disassembling: '%s' with '%s'" CLStr47 = 47, // "Syntax checking: '%s'" CLStr48 = 48, // "Syntax checking: '%s' with '%s'" CLStr49 = 49, // "Getting target info from '%s'" CLStr50 = 50, // "Initializing '%s'" CLStr51 = 51, // "Terminating '%s'" CLStr52 = 52, // "'%s' cannot preprocess, skipping '%s'" CLStr53 = 53, // "'%s' cannot precompile, skipping '%s'" CLStr54 = 54, // "'%s' cannot generate code, skipping '%s'" CLStr55 = 55, // "'%s' has no object code to disassemble" CLStr56 = 56, // "'%s' cannot disassemble, skipping '%s'" CLStr57 = 57, // "Neither '%s' nor '%s' can disassemble, skipping '%s'" CLStr58 = 58, // "No precompiled header name given, '%s' assumed" CLStr59 = 59, // "Precompile target '%s' given on command line; source-specified name '%s' ignored" CLStr60 = 60, // "Writing precompiled %s file '%s'" CLStr61 = 61, // "Reading precompiled %s file '%s'" CLStr62 = 62, // "Cannot %s memory for %s" CLStr63 = 63, // "Files/directories must have length <= %ld characters;\n'%s' not accepted" CLStr64 = 64, // "Guessed linker name '%s' from compiler name '%s'" CLStr65 = 65, // "Can't find %s '%s' in path" CLStr66 = 66, // "Calling %s '%s'" CLStr67 = 67, // "Can't execute %s '%s' (%s)" CLStr68 = 68, // "%s '%s' returned with exit code %d" CLStr69 = 69, // "Too many errors printed, aborting program" CLStr70 = 70, // "Too many errors printed, suppressing errors for current file" CLStr71 = 71, // "Too many warnings printed, suppressing warnings for current file" CLStr72 = 72, // "No %s mapping matches '%s' (unrecognized file contents or filename extension); %s" CLStr73 = 73, // "No plugin or target matches the file '%s', ignoring" CLStr74 = 74, // "File '%s' cannot be handled by this tool, ignoring" CLStr75 = 75, // "File '%s' does not match the active target" CLStr76 = 76, // "Adding%s:\t'%s'" CLStr77 = 77, // "Creating new overlay '%s' in group '%s'" CLStr78 = 78, // "Creating new overlay group '%s' at addr %08X:%08X" CLStr79 = 79, // "File '%s' cannot be added to overlay group; define an overlay in the group first" CLStr80 = 80, // "Cannot create virtual export file '%s' (from '-export name,...')" CLStr81 = 81, // "Too many %s defined; at most %d%s is allowed" CLStr82 = 82, // "Loading preference panel '%s'" CLStr83 = 83, // "%s:" CLStr84 = 84, // "\t%s%s" CLStr85 = 85, // "Already defined %s search path; '%s' added after other paths" CLStr86 = 86, // "License check failed: %s" CLStr87 = 87, // "The plugin '%s' (version '%s') cannot be used:\n%s" CLStr88 = 88, // "Plugin '%s' has already been registered" CLStr89 = 89, // "Preferences for '%s' have already been registered" CLStr90 = 90, // "Preferences for '%s' not found" CLStr91 = 91, // "Some preferences needed by the plugin '%s' have not been registered" CLStr92 = 92, // "Could not load file '%s'" CLStr93 = 93, // "Could not find change current working directory to '%s'" CLStr94 = 94, // "Out of memory" CLStr95 = 95, // "The tool did not produce any output while %s the file '%s'" CLStr96 = 96, // "The filename '%s' is invalid" CLStr97 = 97, // "The %slinker for this target was not found" CLStr98 = 98, // "%s\n%s (OS error %d)" CLStr99 = 99, // "%s\n%s (error %d)" CLStr100 = 100, // "Note: '%s' did not generate any browse information \nfor '%s'; no browser output generated" CLStr101 = 101, // "Source and specified output for the file '%s' are identical; no output will be generated" CLStr102 = 102, // "More than one output filename specified for '%s'; ignoring '%s'" CLStr103 = 103, // "Pref panel data for '%s' is out-of-date or invalid" CLStr104 = 104, // "Changing primary user access path to '%s'" CLStr105 = 105, // "The linker does not expect duplicate files; ignoring repeated '%s'" CLStr106 = 106 }; #define DO_INTERNAL_ERROR(line, ...) CLInternalError(__FILE__, line, __VA_ARGS__) #ifdef __MWERKS__ #pragma options align=mac68k #endif // TODO fixme typedef struct CPrepFileInfo { FSSpec textfile; void *nameNode; SInt32 fileModDate; char *textbuffer; SInt32 textlength; SInt32 linenumber; SInt32 pos; Boolean hasprepline; SInt16 fileID; Boolean recordbrowseinfo; void *unk; } CPrepFileInfo; typedef CPrepFileInfo *CPrepFileInfoStack[]; #ifdef __MWERKS__ #pragma options align=reset #endif enum { OptsCmdLineState_0 = 0, OptsCmdLineState_1 = 1, OptsCmdLineState_2 = 2, OptsCmdLineState_3 = 3 }; enum { OptsCompilerSbmState_0 = 0, OptsCompilerSbmState_1 = 1, // sbmRebuild? OptsCompilerSbmState_2 = 2, OptsCompilerSbmState_3 = 3 // sbmClean? }; enum { CmdLineStage_Cg = 1, CmdLineStage_Pp = 2, CmdLineStage_Ds = 3 }; enum { CmdLineStageMask_Pp = 1, CmdLineStageMask_Cg = 2, CmdLineStageMask_Ds = 4, CmdLineStageMask_Dp = 8 }; // Result codes used by various things in CLMain and CLFileOps enum { Result_Success = 0, Result_Failed = 1, Result_Cancelled = 2 }; #ifdef __cplusplus extern "C" { #endif typedef struct MessageRef { OSSpec sourcefile; OSSpec errorfile; char *sourceline; SInt32 linenumber; SInt32 tokenoffset; SInt16 tokenlength; SInt32 selectionoffset; SInt16 selectionlength; } MessageRef; typedef struct Paths { struct Path **pathsArray; UInt16 arraySize; UInt16 pathsCount; } Paths; typedef struct Frameworks { struct Paths_FWInfo **fwsArray; UInt16 arraySize; UInt16 fwsCount; } Frameworks; typedef struct Path { OSPathSpec *spec; Paths *recursive; char *dirlist; SInt16 flags; } Path; typedef struct Paths_FWInfo { OSSpec fileSpec; OSPathSpec version; OSPathSpec name; Path *path; Boolean hidden; } Paths_FWInfo; typedef struct InclFile { SInt32 filenameoffs; Path *accesspath; Path *globalpath; Path *specialpath; Boolean syspath; } InclFile; typedef struct Incls { struct Target *targ; SInt32 numincls; SInt32 maxincls; InclFile *files; SInt32 buflen; SInt32 bufpos; char *buffer; Paths *allPaths; } Incls; typedef struct Deps { int numDeps; int maxDeps; SInt32 *list; Incls *incls; } Deps; typedef struct OvlAddr { UInt32 lo, hi; } OvlAddr; typedef struct Overlay { char name[256]; SInt32 *list; SInt32 cnt; SInt32 max; struct Overlay *next; } Overlay; typedef struct OvlGroup { char name[256]; OvlAddr addr; Overlay *olys; Overlay *lastoly; int olycnt; struct OvlGroup *next; } OvlGroup; typedef struct Overlays { OvlGroup *groups; OvlGroup *lastgrp; SInt32 grpcnt; } Overlays; typedef struct Segment { char name[32]; UInt16 attrs; } Segment; typedef struct Segments { Segment **segsArray; UInt16 arraySize; UInt16 segsCount; } Segments; typedef struct File { struct File *next; SInt32 filenum; UInt16 segnum; time_t srcmoddate; time_t outmoddate; char srcfilename[256]; char outfilename[256]; SInt16 outfileowner; OSSpec srcfss; OSSpec outfss; SInt16 writeToDisk; SInt16 wroteToDisk; SInt16 tempOnDisk; struct Plugin *compiler; SInt32 dropinflags; SInt32 objectflags; SInt32 mappingflags; SInt16 sourceUsage; SInt16 objectUsage; Handle textdata; Handle objectdata; Handle browsedata; SInt32 codesize; SInt32 udatasize; SInt32 idatasize; SInt32 compiledlines; Boolean recompileDependents; Boolean gendebug; Boolean hasobjectcode; Boolean hasresources; Boolean isresourcefile; Boolean weakimport; Boolean initbefore; Boolean mergeintooutput; Deps deps; Boolean recordbrowseinfo; SInt16 browseFileID; char browseoptions[32]; OSType filetype; OSType filecreator; } File; typedef struct Files { File *fileList; SInt32 fileCount; } Files; typedef struct VFile { char displayName[32]; Handle data; struct VFile *next; } VFile; enum { LinkModel0 = 0, LinkModel1 = 1, LinkModel2 = 2 }; typedef struct Target { struct BuildInfo { UInt32 linesCompiled; UInt32 codeSize; UInt32 iDataSize; UInt32 uDataSize; } info; CWTargetInfo *targetinfo; struct { Segments segs; Overlays overlays; } linkage; SInt32 linkmodel; Files files; Files pchs; Incls incls; Paths sysPaths; Paths userPaths; OSType lang; OSType cpu; OSType os; char targetName[64]; struct Plugin *preLinker; struct Plugin *linker; struct Plugin *postLinker; UInt32 preLinkerDropinFlags; UInt32 linkerDropinFlags; UInt32 postLinkerDropinFlags; OSPathSpec outputDirectory; VFile *virtualFiles; struct Target *next; } Target; typedef struct Project { Target *targets; OSSpec projectDirectory; } Project; enum { CLStyledMessageDispatch_Type0 = 0, CLStyledMessageDispatch_Type1 = 1, CLStyledMessageDispatch_Type2 = 2, CLStyledMessageDispatch_Type3 = 3, CLStyledMessageDispatch_Type4 = 4, CLStyledMessageDispatch_Type5 = 5 }; enum { IncludeSearch_Proj = 0, IncludeSearch_Source = 1, IncludeSearch_Explicit = 2, IncludeSearch_Include = 3 }; typedef struct PrefPanel PrefPanel; typedef struct Plugin { BasePluginCallbacks *cb; CompilerLinkerPluginCallbacks *cl_cb; ParserPluginCallbacks *pr_cb; CWPluginContext context; char *cached_ascii_version; struct Plugin *next; } Plugin; /********************************/ /* State */ typedef struct { int argc; char **argv; OSType cpu; OSType os; OSType plugintype; OSType language; OSType parserstyle; OSSpec programSpec; const char *programName; SInt16 countWarnings; SInt16 countErrors; Boolean pluginDebug; Boolean userBreak; Boolean withholdWarnings; Boolean withholdErrors; OSSpec makefileSpec; OSPathSpec sbmPathSpec; OSHandle browseTableHandle; char *stdout_base; Boolean stdout_written; } CLState; // assumed name extern char cmdline_build_time[32]; extern char cmdline_build_date[32]; extern CLState clState; extern PCmdLineLinker optsLinker; extern PCmdLineCompiler optsCompiler; extern PCmdLineEnvir optsEnvir; extern PCmdLine optsCmdLine; extern Target *gTarg; extern Project mainProj; extern CWCommandLineArgs *plugin_args; extern CWCommandLineArgs *panel_args; extern const char **panelNames; extern int numPanels; extern CLPluginInfo *pluginInfo; extern int numPlugins; extern jmp_buf exit_program; /********************************/ /* Callbacks/CLParserCallbacks_V1.cpp */ extern int (*PrefPanelsChangedCallback)(const char *); /********************************/ /* Clients/ClientGlue.c */ extern int RegisterResource(const char *name, SInt16 rsrcid, const char **list); extern int RegisterStaticPlugin(const BasePluginCallbacks *callbacks); extern int RegisterStaticCompilerLinkerPlugin(const BasePluginCallbacks *callbacks, const CompilerLinkerPluginCallbacks *cl_callbacks); extern int RegisterStaticParserPlugin(const BasePluginCallbacks *cb, const ParserPluginCallbacks *pr_callbacks); extern void SetBuildTarget(OSType cpu, OSType os); extern void SetParserType(OSType plang); extern void SetPluginType(OSType lang, OSType type); extern int CmdLine_Initialize(int argc, char **argv, const char *builddate, const char *buildtime); extern int CmdLine_Driver(void); extern int CmdLine_Terminate(int exitcode); /********************************/ /* Envir/CLErrors.c */ extern void CLReportError(SInt16 errid, ...); extern void CLReportWarning(SInt16 errid, ...); extern void CLReport(SInt16 errid, ...); extern void CLReportOSError(SInt16 errid, int err, ...); extern void CLReportCError(SInt16 errid, int err_no, ...); extern void CLInternalError(const char *file, int line, const char *format, ...); extern void CLFatalError(const char *format, ...); /********************************/ /* Envir/CLIO.c */ extern void SetupDebuggingTraps(void); extern Boolean IO_Initialize(void); extern Boolean IO_Terminate(void); extern Boolean IO_HelpInitialize(void); extern Boolean IO_HelpTerminate(void); extern void FixHandleForIDE(Handle text, UInt32 size); extern Boolean ShowHandle(Handle text, UInt32 size, Boolean decorate); extern Boolean WriteHandleToFile(OSSpec *spec, Handle text, UInt32 size, OSType creator, OSType type); extern Boolean WriteBinaryHandleToFile(OSSpec *spec, OSType maccreator, OSType mactype, OSHandle *text); extern Boolean AppendHandleToFile(OSSpec *spec, Handle text, UInt32 size, OSType maccreator, OSType mactype); extern void InitWorking(void); extern void ShowWorking(int x); extern void TermWorking(void); extern Boolean CheckForUserBreak(void); extern char *IO_FormatText(char *buffer, SInt32 size, char *newline, const char *format, ...); extern void CLPrintDispatch(int unk, SInt16 msgtype, const char *message); extern void CLPrintType(SInt16 msgtype, const char *format, ...); extern void CLPrint(const char *format, ...); extern void CLPrintWarning(const char *format, ...); extern void CLPrintErr(const char *format, ...); extern SInt16 CLStyledMessageDispatch(Plugin *plugin, MessageRef *ref, SInt32 errorNumber, SInt16 msgType, const char *format, ...); /********************************/ /* Plugins/CLPlugins.c */ extern const ToolVersionInfo *Plugin_GetToolVersionInfo(void); extern const char *Plugin_GetDropInName(Plugin *pl); extern const VersionInfo *Plugin_GetVersionInfo(Plugin *pl); extern char *Plugin_GetVersionInfoASCII(Plugin *pl); extern DropInFlags *Plugin_GetDropInFlags(Plugin *pl); extern OSType 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, OSType cpu, OSType os, Boolean exact); extern Boolean Plugins_CL_HaveMatchingTargets(Plugin *p1, Plugin *p2, Boolean exact); extern Boolean Plugin_CL_MatchesFileType(Plugin *pl, OSType type, const char *extension, Boolean exact); extern Boolean Plugin_MatchesType(Plugin *pl, OSType type, OSType lang, Boolean exact); extern Boolean Plugin_Pr_MatchesPlugin(Plugin *pl, CLPluginInfo *pluginfo, OSType cpu, OSType os); extern Boolean Plugin_Pr_MatchesPanels(Plugin *pl, int numPanels, const char **panelNames); extern Boolean Plugin_CL_WriteObjectFile(Plugin *pl, FSSpec *srcfss, FSSpec *outfss, OSType creator, OSType type, Handle data); extern Boolean Plugin_CL_GetCompilerMapping(Plugin *pl, OSType type, const char *ext, UInt32 *flags); extern Plugin *Plugin_New(const BasePluginCallbacks *cb, const CompilerLinkerPluginCallbacks *cl_cb, const ParserPluginCallbacks *pr_cb); extern void Plugin_Free(Plugin *pl); extern Boolean Plugin_VerifyPanels(Plugin *pl); extern void Plugins_Init(void); extern void Plugins_Term(void); extern int Plugins_Add(Plugin *pl); extern Plugin *Plugins_MatchName(Plugin *list, const char *name); extern Plugin *Plugins_CL_MatchTarget(Plugin *list, OSType cpu, OSType os, OSType type, OSType lang); extern Plugin *Plugins_CL_MatchFileType(Plugin *list, OSType type, const char *ext, Boolean exact); extern Plugin *Plugins_GetPluginForFile(Plugin *list, OSType plugintype, OSType cpu, OSType os, OSType type, const char *ext, OSType lang); extern Plugin *Plugins_GetLinker(Plugin *list, OSType cpu, OSType os); extern Plugin *Plugins_GetPreLinker(Plugin *list, OSType cpu, OSType os); extern Plugin *Plugins_GetPostLinker(Plugin *list, OSType cpu, OSType os); extern Plugin *Plugins_GetParserForPlugin(Plugin *list, OSType style, int numPlugins, CLPluginInfo *plugins, OSType cpu, OSType os, int numPanels, const char **panelNames); extern Plugin *Plugins_GetCompilerForLinker(Plugin *list, Plugin *linker, OSType type, const char *ext, OSType edit); extern int Plugins_GetPluginList(Plugin *list, int *numPlugins, CLPluginInfo **pluginInfo); extern int Plugins_GetPrefPanelUnion(Plugin *list, int *numPanels, const char ***panelNames); extern int Plugin_AddFileTypeMappings(Plugin *pl, OSFileTypeMappings **mlist); extern int Plugins_AddFileTypeMappingsForTarget(Plugin *list, OSFileTypeMappings **mlist, OSType cpu, OSType os); extern SInt16 Plugin_Call(Plugin *pl, void *context); /********************************/ /* Project/CLAccessPaths.c */ extern Path *Path_Init(const OSPathSpec *dir, Path *path); extern Path *Path_New(const OSPathSpec *dir); extern void Path_Free(Path *path); extern Boolean Paths_Initialize(Paths *paths); extern Boolean Paths_Terminate(Paths *paths); extern Boolean Paths_AddPath(Paths *paths, Path *path); extern Boolean Paths_InsertPath(Paths *paths, UInt16 index, Path *path); extern Boolean Paths_RemovePath(Paths *paths, UInt16 index); extern Boolean Paths_DeletePath(Paths *paths, UInt16 index); extern Path *Paths_GetPath(Paths *paths, UInt16 pathnum); extern UInt16 Paths_Count(const Paths *paths); extern Boolean Paths_FindPath(const Paths *paths, const Path *path); extern Path *Paths_FindPathSpec(const Paths *paths, const OSPathSpec *dir); extern Boolean Paths_GatherRecurse(Path *path); extern int Paths_CountRecurse(Paths *paths); extern void Paths_CopyRecurseFSS(FSSpec *list, Paths *paths, UInt16 count); extern Boolean MakeFrameworkPath(char *out, const char *filename, Path *globalpath); extern void Frameworks_AddPath(const OSPathSpec *oss); extern int Frameworks_AddFramework(const char *name, const char *version, Boolean hidden); extern void Framework_GetEnvInfo(void); extern int Frameworks_GetCount(void); extern Paths_FWInfo *Frameworks_GetInfo(int which); // Not sure if this is the right TU for this extern Paths FrameworkPaths; /********************************/ /* Project/CLFiles.c */ extern File *File_New(void); extern void File_Free(File *file); extern Boolean Files_Initialize(Files *); extern Boolean Files_Terminate(Files *); extern Boolean Files_AddFile(Files *, File *file); extern Boolean Files_InsertFile(Files *, File *file, SInt32 position); extern File *Files_GetFile(Files *, SInt32 filenum); extern File *Files_FindFile(Files *, OSSpec *spec); extern int Files_Count(Files *); extern Boolean VFiles_Initialize(VFile **list); extern void VFiles_Terminate(VFile **list); extern VFile *VFile_New(const char *name, Handle data); extern Boolean VFiles_Add(VFile **list, VFile *entry); extern VFile *VFiles_Find(VFile *list, const char *name); /********************************/ /* Project/CLOverlays.c */ extern Boolean Overlays_Initialize(Overlays *); extern Boolean Overlays_Terminate(Overlays *); extern Boolean Overlays_AddOvlGroup(Overlays *, OvlGroup *grp, SInt32 *grpnum); extern OvlGroup *Overlays_GetOvlGroup(Overlays *, SInt32 grpnum); extern SInt32 Overlays_CountGroups(Overlays *); extern Boolean Overlays_AddFileToOverlay(Overlays *, SInt32 grpnum, SInt32 ovlnum, SInt32 filenum); extern Overlay *Overlays_GetOverlayInGroup(Overlays *, SInt32 grpnum, SInt32 ovlnum); extern SInt32 Overlays_GetFileInOverlay(Overlays *, SInt32 grpnum, SInt32 ovlnum, SInt32 filnum); extern OvlGroup *OvlGroup_New(const char *name, OvlAddr addr); extern void OvlGroup_Delete(OvlGroup *grp); extern Boolean OvlGroup_AddOverlay(OvlGroup *, Overlay *oly, SInt32 *olynum); extern Overlay *OvlGroup_GetOverlay(OvlGroup *, SInt32 olynum); extern SInt32 OvlGroup_CountOverlays(OvlGroup *); extern Overlay *Overlay_New(const char *name); extern void Overlay_Delete(Overlay *oly); extern Boolean Overlay_AddFile(Overlay *oly, SInt32 filenum, SInt32 *filnum); extern SInt32 Overlay_GetFile(Overlay *oly, SInt32 filnum); extern SInt32 Overlay_CountFiles(Overlay *oly); /********************************/ /* Project/CLProj.c */ extern Boolean Proj_Initialize(Project *); extern Boolean Proj_Terminate(Project *); /********************************/ /* Project/CLSegs.c */ extern Segment *Segment_New(const char *name, UInt16 attrs); extern void Segment_Free(Segment *seg); extern Boolean Segments_Initialize(Segments *segs); extern Boolean Segments_Terminate(Segments *segs); extern Boolean Segments_AddSegment(Segments *segs, Segment *seg, UInt16 *index); extern Boolean Segments_InsertSegment(Segments *segs, UInt16 index, Segment *seg); extern Boolean Segments_DeleteSegment(Segments *segs, UInt16 index); extern Segment *Segments_GetSegment(Segments *segs, UInt16 segnum); extern UInt16 Segments_Count(const Segments *segs); /********************************/ /* CLBrowser.c */ extern int Browser_Initialize(OSHandle *browsetableptr); extern int Browser_Terminate(OSHandle *browsetableptr); extern int Browser_SearchFile(OSHandle *browsetable, const char *fullpath, SInt16 *ID); extern int Browser_SearchAndAddFile(OSHandle *browsetable, const char *fullpath, SInt16 *ID); extern int Browser_PackBrowseFile(Handle browsedata, OSHandle *browsetable, OSHandle *browsefileptr); /********************************/ /* CLDependencies.c */ extern SInt16 *CLT_filesp; extern CPrepFileInfoStack *CLT_filestack; extern Boolean Incls_Initialize(Incls *incls, Target *targ); extern void Incls_Terminate(Incls *incls); extern Boolean Incls_FindFileInPaths(Incls *incls, char *filename, Boolean fullsearch, OSSpec *spec, SInt32 *inclidx); extern Boolean Deps_Initialize(Deps *deps, Incls *incls); extern void Deps_Terminate(Deps *deps); extern int Deps_ChangeSpecialAccessPath(OSSpec *srcfss, Boolean initialize); extern Path *Deps_GetSpecialAccessPath(void); extern void Deps_AddDependency(Deps *deps, SInt32 incl, OSSpec *spec, Boolean unk, SInt16 dependencyType, Boolean *alreadyincluded); extern void Deps_ListDependencies(Incls *incls, File *file, OSHandle *h); /********************************/ /* CLFileOps.c */ extern int GetOutputFile(File *file, SInt16 stage); extern int StoreObjectFile(File *file); extern int CompileFilesInProject(void); extern int LinkProject(void); /********************************/ /* CLFileTypes.c */ extern void AddFileTypeMappingList(OSFileTypeMappings **list, const OSFileTypeMappingList *entry); extern void UseFileTypeMappings(OSFileTypeMappings *list); extern OSErr SetMacFileType(const FSSpec *spec, OSType mactype); extern OSErr GetMacFileType(const FSSpec *spec, OSType *mactype); /********************************/ /* CLIncludeFileCache.c */ extern void InitializeIncludeCache(void); extern void CleanupIncludeCache(void); extern void CacheIncludeFile(OSSpec *spec, Handle text, Boolean precompiled); extern Handle CachedIncludeFile(OSSpec *spec, Boolean *precompiled); extern void FreeIncludeFile(Handle text); /********************************/ /* CLLicenses.c */ extern void License_Initialize(void); extern void License_Terminate(void); extern SInt32 License_Checkout(const char *featureName, const char *licenseVersion, Boolean flag, char *errorBuf); extern void License_Refresh(/* unknown args */); extern void License_Checkin(/* unknown args */); extern void License_AutoCheckin(void); /********************************/ /* CLLoadAndCache.c */ extern short FixTextHandle(Handle txt); extern int LoadAndCacheFile(OSSpec *spec, Handle *texthandle, Boolean *precomp); extern void CopyFileText(Handle src, char **text, SInt32 *textsize); /********************************/ /* CLMain.c */ extern void Main_PreParse(int *argc, char ***argv); extern void Main_PassSpecialArgs(int *argc, char ***argv); extern int Main_Initialize(int argc, char **argv); extern int Main_Terminate(int code); extern int Main_Driver(void); /********************************/ /* CLPluginRequests.cpp */ extern Boolean SendParserRequest( Plugin *plugin, Target *target, CWCommandLineArgs *args, OSType cpu, OSType os, int numPlugins, CLPluginInfo *pluginInfo, int numPanels, const char **panelNames, CWCommandLineArgs *plugin_args, CWCommandLineArgs *panel_args, const char *build_date, const char *build_time, const ToolVersionInfo *build_tool ); extern Boolean SendCompilerRequest(Plugin *plugin, File *file, SInt16 stage); extern Boolean SendTargetInfoRequest(Target *targ, Plugin *linker, SInt32 dropinflags); extern Boolean SendLinkerRequest(Plugin *plugin, SInt32 dropinflags, CWTargetInfo *targetInfo); extern Boolean SendDisassemblerRequest(Plugin *linker, File *file); extern Boolean SendInitOrTermRequest(Plugin *plugin, Boolean reqIsInitialize); /********************************/ /* CLPrefs.c */ extern PrefPanel *PrefPanel_New(const char *name, void *initdata, SInt32 initdatasize); extern Handle PrefPanel_GetHandle(PrefPanel *panel); extern int PrefPanel_PutHandle(PrefPanel *panel, Handle data); extern void Prefs_Initialize(void); extern void Prefs_Terminate(void); extern Boolean Prefs_AddPanel(PrefPanel *panel); extern PrefPanel *Prefs_FindPanel(const char *name); /********************************/ /* CLTarg.c */ extern Target *Target_New(const char *name, OSType cpu, OSType os, OSType lang); extern void Target_Free(Target *targ); extern void Targets_Term(Target *list); extern void Target_Add(Target **list, Target *targ); /********************************/ /* CLToolExec.c */ extern void AppendArgumentList(int *argc, char ***argv, const char *str); extern int SetupTemporaries(void); extern int DeleteTemporaries(void); extern int ExecuteLinker(Plugin *plugin, SInt32 dropinflags, File *file, char *stdoutfile, char *stderrfile); /********************************/ /* CLWriteObjectFile.c */ extern int WriteObjectFile(File *file, OSType maccreator, OSType mactype); extern int WriteBrowseData(File *file, OSType maccreator, OSType mactype); #ifdef __cplusplus } #endif #endif