Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
/*
 *	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;
}
Exemplo n.º 3
0
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);
}