www.gusucode.com > private工具箱matlab源码程序 > private/code_machine_source_file_rtw.m
function code_machine_source_file_rtw(fileNameInfo) % CODE_MACHINE_SOURCE_FILE(FILENAMEINFO,MACHINE,TARGET) % Copyright 1995-2009 The MathWorks, Inc. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% GLOBAL VARIABLES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% global gMachineInfo machine = gMachineInfo.machineId; fileName = fullfile(fileNameInfo.targetDirName,fileNameInfo.machineSourceFile); sf_echo_generating('Coder',fileName); file = fopen(fileName,'Wt'); if file<3 construct_coder_error([],sprintf('Failed to create file: %s.',fileName),1); end fprintf(file,'%%implements "machineSource" "C"\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Var Definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,'%%function CacheMachineDefinitions(block,system) void\n'); fprintf(file,'%%openfile tmpFcnBuf\n'); vars = sf('Cg','get_vars',machine); for var = vars codeStr = sf('Cg','get_var_def',var,1); fprintf(file,' %s \n',strip_trailing_new_lines(codeStr)); end fprintf(file,'%%closefile tmpFcnBuf\n'); fprintf(file,'%%<SLibCacheCodeToFile("sf_machine_data_defn",tmpFcnBuf)>\\\n'); fprintf(file,'\n'); fprintf(file,'%%endfunction\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Inlined Machine Data Initializer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,'%%function DumpMachineInitializer(block) Output\n'); fprintf(file,'\n'); fprintf(file,'%%openfile tmpFcnBuf\n'); x = sf('Cg','get_cg_fcn_data',gMachineInfo.machineId); str = sf('Cg','get_fcn_body',x.dataInitializer); fprintf(file,'%s\n',str); fprintf(file,'%%closefile tmpFcnBuf\n'); fprintf(file,'%%if !WHITE_SPACE(tmpFcnBuf)\n'); fprintf(file,'\n'); fprintf(file,' %s\n',sf_comment('/* Machine initializer */')); fprintf(file,' %%<tmpFcnBuf>\\\n'); fprintf(file,'%%endif\n'); fprintf(file,'%%endfunction\n'); fprintf(file,'%%function GlobalMachineInitializer(block) void\n'); fprintf(file,' %%openfile tmpFcnBuf\n'); fprintf(file,' %%<DumpMachineInitializer(block)>\\\n'); for i=1:length(fileNameInfo.linkMachines) fprintf(file,' %%if FILE_EXISTS("%s_rtw.tlc")\n',fileNameInfo.linkMachines{i}); fprintf(file,' %%generatefile "machineSource" "%s_rtw.tlc"\n',fileNameInfo.linkMachines{i}); fprintf(file,' %%<GENERATE_TYPE(block,"DumpMachineInitializer","machineSource")>\\\n'); fprintf(file,' %%endif\n'); end fprintf(file,' %%closefile tmpFcnBuf\n'); fprintf(file,' %%return tmpFcnBuf \n'); fprintf(file,'%%endfunction %%%% GlobalMachineInitializer\n'); fprintf(file,'\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Inlined Machine Data Terminator %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,'%%function DumpMachineTerminator(block) Output\n'); fprintf(file,'%%openfile tmpFcnBuf\n'); x = sf('Cg','get_cg_fcn_data',gMachineInfo.machineId); str = sf('Cg','get_fcn_body',x.dataFinalizer); fprintf(file,'%s\n',str); fprintf(file,'%%closefile tmpFcnBuf\n'); fprintf(file,'%%if !WHITE_SPACE(tmpFcnBuf)\n'); fprintf(file,'\n'); fprintf(file,' %s\n',sf_comment('/* Machine initializer */')); fprintf(file,' %%<tmpFcnBuf>\\\n'); fprintf(file,'%%endif\n'); fprintf(file,'%%endfunction\n'); fprintf(file,'%%function GlobalMachineTerminator(block) void\n'); fprintf(file,' %%openfile tmpFcnBuf\n'); fprintf(file,' %%<DumpMachineTerminator(block)>\\\n'); for i=1:length(fileNameInfo.linkMachines) fprintf(file,' %%generatefile "machineSource" "%s_rtw.tlc"\n',fileNameInfo.linkMachines{i}); fprintf(file,' %%<GENERATE_TYPE(block,"DumpMachineTerminator","machineSource")>\\\n'); end fprintf(file,' %%closefile tmpFcnBuf\n'); fprintf(file,' %%return tmpFcnBuf \n'); fprintf(file,'%%endfunction %%%% GlobalMachineTerminator\n'); fprintf(file,'\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% function Definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,'%%function CacheMachineFunctions(block,system) void\n'); fprintf(file,' %%openfile tmpFcnBuf\n'); funcs = sf('Cg','get_functions',machine); for func = funcs codeStr = sf('Cg','get_fcn_def',func,1); fprintf(file,' %s \n',strip_trailing_new_lines(codeStr)); end fprintf(file,' %%closefile tmpFcnBuf\n'); fprintf(file,' %%<SLibCacheCodeToFile("sf_machine_fcn_defn",tmpFcnBuf)>\n'); fprintf(file,'%%endfunction\n'); fclose(file);