%% ============================================================================
%% $RCSfile: mrtreg.tlc,v $
%% $Revision: 1.16.4.5 $
%% $Date: 2004/12/16 21:21:09 $
%%
%% Abstract:
%%   This system file creates model_reg.h for RTW's RealTimeMalloc code format.
%%
%% Copyright 1994-2004 The MathWorks, Inc.
%%
%selectfile NULL_FILE

%% ============================================================================
%% The malloc real-time file model_reg.h is created as follows:
%%
%% /* File banner */
%%
%% User code ....................... LibRegFileCustomCode(buffer, "header")
%%
%% MdlInitializeSizes()
%% MdlInitializeSampleTimes()
%%
%% SimStruct *model()
%% {
%%   Create and initialize
%%   SimStruct and model info
%%   structure
%%   {
%%     RTW declarations
%%     Model registration
%%     {
%%       Declare SimStruct
%%       variables
%%       Non-finite assignments .... LibCacheNonFiniteAssignment(buffer)
%%       {
%%         Block instance data ..... BlockInstanceData(block, system)
%%       }
%%       Non-inlined S-Function
%%       registration
%%     }
%%     {
%%       User declarations ......... LibMdlRegCustomCode(buffer, "declaration")
%%       User entry code ........... LibMdlRegCustomCode(buffer, "execution")
%%       User exit code ............ LibMdlRegCustomCode(buffer, "trailer")
%%     }
%%   }
%%   return rtS
%% }
%%
%% User code ..................... LibRegFileCustomCode(buffer, "trailer")
%%
%% /* [EOF] model_reg.h */

%if EXISTS("_MRTREG_") == 0
%assign _MRTREG_ = 1

%realformat "CONCISE"

%assign opFile = SLibAddModelFile("SystemBody","Simulink", Name)

%assign rtModelObj     = RTMGetModelSS()
%assign rtModelObjType = tSimStructType


%% ============================================================================
%% Dump buffers to output
%%
 
%openfile includesBuf

%% ============================================================================
%% Parameter Tuning information to map parameters.
%%
%if ParameterTuning == 1

  #include "mdl_info.h"
  #include "%<Name>_pt.c"
%endif
%closefile includesBuf

%<SLibSetModelFileAttribute(opFile, "Includes", includesBuf)>

%%
%% ============================================================================
%% Top of registration file custom code
%%
%openfile tmpBuf
%<LibDumpTopOfRegFileUserCode()>\
%closefile tmpBuf
%<SLibSetModelFileAttribute(opFile, "UserTop", tmpBuf)>

%openfile fcnsBuf
%%
%% ============================================================================
%% MdlInitializeSizes
%%
/* Function to initialize sizes */
static void MdlInitializeSizes(%<rtModelObjType> *%<rtModelObj>)
{
  %<LibDumpModelInitializeSizes()>\
}

%% ============================================================================
%% MdlInitializeSampleTimes
%%
/* Function to initialize sample times */
static void MdlInitializeSampleTimes(%<rtModelObjType> *%<rtModelObj>)
{
  %<LibDumpModelInitializeSampleTimes()>\
}

%% ============================================================================
%% Output registration function
%%
/* Function to register the model */
%<ExternCPrefix> %<rtModelObjType> *%<CompiledModel.Name>(void)
{
  %% These RTW variables are always declared
  %%
  %<rtModelObjType> *%<rtModelObj>;
  
  %<rtModelObj> = (%<rtModelObjType> *) malloc(sizeof(%<rtModelObjType>));
  if(%<rtModelObj> == NULL) {
    return NULL;
  }
  (void)memset((char *)%<rtModelObj>, 0, sizeof(%<rtModelObjType>));
  
  %<LibDumpModelRegistration(0)>\
  %<LibDumpNonFiniteAssignmentCache()>\
  %<LibDumpBlockInstanceData()>\
  %<LibDumpSFunctionRegistration()>\
  %% user code
  %if !LibRegFcnUserDeclarationIsEmpty()
    %<"{">
    %<LibDumpRegFcnUserDeclarationCode()>
  %endif
  %<LibDumpRegFcnUserEntryCode()>\
  %<LibDumpRegFcnUserExitCode()>\
  %if !LibRegFcnUserDeclarationIsEmpty()
    %<"}">
  %endif
  
  return %<rtModelObj>;
}
%closefile fcnsBuf

%<SLibSetModelFileAttribute(opFile, "Functions", fcnsBuf)>
%% Access TFL for nonfinites, the init call is done by static main.c
%assign dummy = LibGenMathFcnCall("initnonfinite",...
  FcnGetDataTypeIdFromName("double"), "sizeof(real_T)", "")

%%
%% ============================================================================
%% Custom trailer code
%%
%openfile tmpBuf
%<LibDumpBottomOfRegFileUserCode()>\
%closefile tmpBuf
%<SLibSetModelFileAttribute(opFile, "UserBottom", tmpBuf)>

%selectfile NULL_FILE

%% ============================================================================
%% Undef aliases for consistency checking
%%
%undef S

%endif %% _MRTREG_

%% [EOF] mrtreg.tlc
