gusucode.com > private工具箱matlab源码程序 > private/code_sfun_customcode_header_file.m
function code_sfun_customcode_header_file(fileNameInfo, customCodeSettings) % CODE_SFUN_CUSTOMCODE_HEADER_FILE(FILENAMEINFO) % Copyright 2015 The MathWorks, Inc. global gMachineInfo if nargin < 2 customCodeSettings = get_custom_code_settings(gMachineInfo.target, gMachineInfo.parentTarget); end fileName = fullfile(fileNameInfo.targetDirName, fileNameInfo.customCodeHeaderFile); sf_echo_generating('Coder', fileName); file = fopen(fileName,'Wt'); if file<3 construct_coder_error([],sprintf('Failed to create file: %s.',fileName),1); return end fprintf(file,'#ifndef __%s_customcode_h__\n',gMachineInfo.machineName); fprintf(file,'#define __%s_customcode_h__\n',gMachineInfo.machineName); fprintf(file,'\n'); fprintf(file,'/* Include files */\n'); fprintf(file,'#include "mex.h"\n'); fprintf(file,'#include <string.h>\n'); fprintf(file,'#include <stdlib.h>\n'); fprintf(file,'#include <math.h>\n'); fprintf(file,'#include "tmwtypes.h"\n'); fprintf(file,'\n'); fprintf(file,'#if !defined(rtInf)\n'); fprintf(file,'#define rtInf (mxGetInf())\n'); fprintf(file,'#endif\n'); fprintf(file,'#if !defined(rtMinusInf)\n'); fprintf(file,'#define rtMinusInf (-(mxGetInf()))\n'); fprintf(file,'#endif\n'); fprintf(file,'#if !defined(rtNaN)\n'); fprintf(file,'#define rtNaN (mxGetNaN())\n'); fprintf(file,'#endif\n'); fprintf(file,'#if !defined(rtIsNaN)\n'); fprintf(file,'#define rtIsNaN(X) ((int)mxIsNaN(X))\n'); fprintf(file,'#endif\n'); fprintf(file,'#if !defined(rtIsInf)\n'); fprintf(file,'#define rtIsInf(X) ((int)mxIsInf(X))\n'); fprintf(file,'#endif\n'); fprintf(file,'\n'); if gMachineInfo.ctxInfo.sfcnTgtCustomCodeInfo.hasIncludeCode customCodeString = sfprivate('expand_double_byte_string', customCodeSettings.customCode); fprintf(file,'/* Custom Code from Simulation Target dialog */\n'); fprintf(file,'%s\n',customCodeString); fprintf(file,'\n'); end fprintf(file,'/* Function Declarations */\n'); initFcn = [gMachineInfo.machineName, '_customcode_initializer']; if ~gMachineInfo.ctxInfo.sfcnTgtCustomCodeInfo.hasInitCode fprintf(file,'#define %s()\n',initFcn); else fprintf(file,'extern void %s(void);\n',initFcn); end fprintf(file,'\n'); termFcn = [gMachineInfo.machineName, '_customcode_terminator']; if ~gMachineInfo.ctxInfo.sfcnTgtCustomCodeInfo.hasTermCode fprintf(file,'#define %s()\n',termFcn); else fprintf(file,'extern void %s(void);\n',termFcn); end fprintf(file,'\n'); fprintf(file,'#endif\n'); fprintf(file,'\n'); fclose(file); try_indenting_file(fileName);