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);