pascal short main(CWPluginContext context) { short result; long request; if (CWGetPluginRequest(context, &request) != cwNoErr) return cwErrRequestFailed; result = cwErrInvalidParameter; /* dispatch on compiler request */ switch (request) { case reqInitCompiler: case reqTermCompiler: result = cwNoErr; break; case reqCompile: { line_count = 0; const char *files = NULL; long filelen; CWGetMainFileText(context, &files, &filelen); const char *beg = files; for(int x = 0; x < filelen; x++) { if(*(files++) == '\r') { char file[1024]; memcpy(file, beg, files - beg); file[(files-beg)-1] = '\0'; mocify(context, file); beg = files; } } if(beg != files) { char file[1024]; memcpy(file, beg, files - beg); file[(files-beg)] = '\0'; mocify(context, file); } result = cwNoErr; break; } } /* return result code */ return result; }
/* * xpt_linker - main entry-point for linker plugin * */ pascal short xpt_linker(CWPluginContext context) { long request; if (CWGetPluginRequest(context, &request) != cwNoErr) return cwErrRequestFailed; gPluginContext = context; short result = cwNoErr; /* dispatch on linker request */ switch (request) { case reqInitLinker: /* linker has just been loaded into memory */ break; case reqTermLinker: /* linker is about to be unloaded from memory */ break; case reqLink: /* build the final executable */ result = Link(context); break; case reqDisassemble: /* disassemble object code for a given project file */ result = Disassemble(context); break; case reqTargetInfo: /* return info describing target characteristics */ result = GetTargetInfo(context); break; default: result = cwErrRequestFailed; break; } result = CWDonePluginRequest(context, result); /* return result code */ return result; }
pascal short xpidl_compiler(CWPluginContext context) { long request; if (CWGetPluginRequest(context, &request) != cwNoErr) return cwErrRequestFailed; gPluginContext = context; short result = cwNoErr; /* dispatch on compiler request */ switch (request) { case reqInitCompiler: /* compiler has just been loaded into memory */ break; case reqTermCompiler: /* compiler is about to be unloaded from memory */ break; case reqCompile: /* compile a source file */ result = Compile(context); break; case reqCompDisassemble: /* disassemble a source file */ result = Disassemble(context); break; default: result = cwErrRequestFailed; break; } /* is this necessary? */ CWDonePluginRequest(context, result); /* return result code */ return (result); }