gusucode.com > private工具箱matlab源码程序 > private/dump_exported_fcn_prototypes.m
function dump_exported_fcn_prototypes(file) global gMachineInfo if(isempty(gMachineInfo.exportedFcnInfo)) return; end fprintf(file,'\n'); fprintf(file,' /* Global functions exported by all charts */\n'); for i=1:length(gMachineInfo.exportedFcnInfo) dump_exported_fcn(gMachineInfo.exportedFcnInfo(i),file); end fprintf(file,'\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function dump_exported_fcn(exportedFcnInfo,file) outputDataInfo = exportedFcnInfo.outputDataInfo; inputDataInfo = exportedFcnInfo.inputDataInfo; if (~isempty(outputDataInfo) && ~isempty(outputDataInfo(1).size)) inputDataInfo = [inputDataInfo outputDataInfo(1)]; outputDataInfo = []; end if(isempty(outputDataInfo)) outputTypeStr = 'void'; elseif length(outputDataInfo) == 1 outputTypeStr = type_name_from_info(outputDataInfo(1)); else comma = ''; outputTypeStr = ''; for i =1:length(outputDataInfo) if (~isempty(outputDataInfo(i).size)) deref = '*'; else deref = ''; end % an additional '*' because output types are passed by pointer. outputTypeStr = [outputTypeStr,comma,type_name_from_info(outputDataInfo(i)),deref,'*']; %#ok<AGROW> comma = ','; end end if(isempty(inputDataInfo)) inputTypeStr = 'void'; else comma = ''; inputTypeStr = ''; for i =1:length(inputDataInfo) if (~isempty(inputDataInfo(i).size)) deref = '*'; else deref = ''; end inputTypeStr = [inputTypeStr,comma,type_name_from_info(inputDataInfo(i)),deref]; %#ok<AGROW> comma = ','; end end if length(outputDataInfo) <= 1 fprintf(file,'extern %s %s(%s);\n',outputTypeStr,exportedFcnInfo.name,inputTypeStr); else if ~isempty(inputDataInfo) fprintf(file,'extern void %s(%s,%s);\n',exportedFcnInfo.name,inputTypeStr,outputTypeStr); else fprintf(file,'extern void %s(%s);\n',exportedFcnInfo.name,outputTypeStr); end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function str = type_name_from_info(dataInfo) switch(dataInfo.type) case 'fixpt' str = c_type_from_signed_and_nbits(dataInfo.isSigned, dataInfo.wordLength); otherwise str = c_type_from_sf_type(dataInfo.type, dataInfo.id); end