%selectfile NULL_FILE
%include "formatrtm.tlc"
%if EXISTS("_FORMATEXPORT_") == 0
%assign _FORMATEXPORT_ = 1
%realformat "CONCISE"
%assert (!IsModelReferenceTarget())
%function SLibFormatExport() void
%assign isSfcnForm = (CodeFormat == "S-Function")
%if SLibIsERTCodeFormat() && ...
(!GenerateGRTWrapper || ExtMode || NumContStates)
%assign rootSystem = System[NumSystems-1]
%openfile entryPointFcns
%if ::GenCPP
#ifdef __cplusplus
%<::ExternCPrefix> {
#endif
%endif
%if !SLibAutosarActive()
/* Model entry point functions */
%endif
%if SLibHasSetEventsForThisBaseRateFcn() && !GenerateGRTWrapper
%<SLibGetFcnMemSecPragmaOnDecl("%<Name>_SetEventsForThisBaseStep", "MemSecFuncInitTerm", "Pre")>/
%if MultiInstanceERTCode
%<LibExternInFcnDecls()>void %<Name>_SetEventsForThisBaseStep(boolean_T *eventFlags, %<::tSimStructType> *const rtm);
%else
%<LibExternInFcnDecls()>void %<Name>_SetEventsForThisBaseStep(boolean_T *eventFlags);
%endif
%<SLibGetFcnMemSecPragmaOnDecl("%<Name>_SetEventsForThisBaseStep", "MemSecFuncInitTerm", "Post")>/
%endif
%if ::SeparateRegistrationFcn && !GenerateGRTWrapper
%assign fcnParams = SLibModelFcnArgs("Registration",TLC_FALSE,"")
%<SLibGetFcnMemSecPragmaOnDecl(Name, "MemSecFuncInitTerm", "Pre")>/
%<LibExternInFcnDecls()>%<::tSimStructType> *%<Name>(%<fcnParams>);
%<SLibGetFcnMemSecPragmaOnDecl(Name, "MemSecFuncInitTerm", "Post")>/
%endif
%if !SLibAutosarActive()
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(GenerateModelInitFcnName(), "Initialize", "", "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(GenerateModelInitFcnName(), "MemSecFuncInitTerm", "Pre")>/
%endif
%<LibExternInFcnDecls()>void %<GenerateModelInitFcnName()>(%<SLibModelFcnArgs("Initialize",TLC_FALSE,"")>);
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(GenerateModelInitFcnName(), "Initialize", "", "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(GenerateModelInitFcnName(), "MemSecFuncInitTerm", "Post")>/
%endif
%endif
%if ExportFunctionsMode > 0
%if SLibAutosarActive()
%openfile autosarExportFcns
%endif
%assign rootSystem = System[NumSystems-1]
%foreach id = rootSystem.NumChildSystems
%assign systemId = rootSystem.ChildSystems[id][0]
%assign system = System[systemId]
%if SLibSystemIsModelEntryPoint(system,"") && ...
!LibSystemFcnIsEmpty(system,"OutputUpdate")
%assign sysTid = FcnGetCodeCacheTid(system, "OutputUpdate", FcnGetSubsystemTID(system,TLC_TRUE))
%if ISEMPTY(sysTid)
%assign fcnRecord = LibGetSystemField(system, "OutputUpdateFcnInfo")
%else
%assign fcnRecord = LibGetSystemField(system, "OutputUpdateTID%<sysTid>FcnInfo")
%endif
%<SLibGetFcnMemSecPragmaForSystemOnDecl(fcnRecord.Name, "MemSecFuncExecute", "Pre", system)>/
%<LibExternInFcnDecls()>%<fcnRecord.FcnPrototype>;
%<SLibGetFcnMemSecPragmaForSystemOnDecl(fcnRecord.Name, "MemSecFuncExecute", "Post", system)>/
%if !LibSystemFcnIsEmpty(system, "Enable")
%assign fcnRecord = LibGetSystemField(system, "EnableFcnInfo")
%<SLibGetFcnMemSecPragmaForSystemOnDecl(fcnRecord.Name, "MemSecFuncExecute", "Pre", system)>/
%<LibExternInFcnDecls()>%<fcnRecord.FcnPrototype>;
%<SLibGetFcnMemSecPragmaForSystemOnDecl(fcnRecord.Name, "MemSecFuncExecute", "Post", system)>/
%endif
%if !LibSystemFcnIsEmpty(system, "Disable")
%assign fcnRecord = LibGetSystemField(system, "DisableFcnInfo")
%<SLibGetFcnMemSecPragmaForSystemOnDecl(fcnRecord.Name, "MemSecFuncExecute", "Pre", system)>/
%<LibExternInFcnDecls()>%<fcnRecord.FcnPrototype>;
%<SLibGetFcnMemSecPragmaForSystemOnDecl(fcnRecord.Name, "MemSecFuncExecute", "Post", system)>/
%endif
%endif
%endforeach
%if SLibAutosarActive()
%closefile autosarExportFcns
%addtorecord ::CompiledModel.RTWAutosar ExportedFunctionDecls autosarExportFcns
%selectfile entryPointFcns
%endif
%endif
%foreach tid = NumRuntimeExportedRates
%if SLibSystemIsModelEntryPoint(rootSystem, tid) && ...
(SLibIsExplicitPartitioningTID(tid) || !SLibExplicitTaskingTID(tid)) && ...
!SLibIsExportFcnDiagram()
%assign rootSystem.CurrentTID = tid
%if CombineOutputUpdateFcns
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(SLibModelStepFcnName(tid), "Step", tid, "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(SLibModelStepFcnName(tid), "MemSecFuncExecute", "Pre")>/
%endif
%if (tid == 0) && (NumContStates > 0)
%<LibExternInFcnDecls()>%<SLibModelStepFcnReturn("ReturnType")> %<SLibModelStepFcnName(tid)>(%<SLibModelFcnArgs("UpdateContStates" ,TLC_FALSE,tid)>);
%else
%<LibExternInFcnDecls()>%<SLibModelStepFcnReturn("ReturnType")> %<SLibModelStepFcnName(tid)>(%<SLibModelFcnArgs("OutputUpdate",TLC_FALSE,tid)>);
%endif
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(SLibModelStepFcnName(tid), "Step", tid, "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(SLibModelStepFcnName(tid), "MemSecFuncExecute", "Post")>/
%endif
%else
%assign outputFcnName = FcnGetModelOutputFcnNameFromCoderDictionary(tid)
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(outputFcnName, "Output", tid, "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(outputFcnName, "MemSecFuncExecute", "Pre")>/
%endif
%<LibExternInFcnDecls()>void %<outputFcnName>(%<SLibModelFcnArgs("Output",TLC_FALSE,tid)>);
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(outputFcnName, "Output", tid, "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(outputFcnName, "MemSecFuncExecute", "Post")>/
%endif
%assign outputFcnName = FcnGetModelUpdateFcnNameFromCoderDictionary(tid)
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(outputFcnName, "Update", tid, "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(outputFcnName, "MemSecFuncExecute", "Pre")>/
%endif
%if (tid == 0) && (NumContStates > 0)
%<LibExternInFcnDecls()>void %<outputFcnName>(%<SLibModelFcnArgs("UpdateContStates",TLC_FALSE,tid)>);
%else
%<LibExternInFcnDecls()>void %<outputFcnName>(%<SLibModelFcnArgs("RootUpdate",TLC_FALSE,tid)>);
%endif
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(outputFcnName, "Update", tid, "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(outputFcnName, "MemSecFuncExecute", "Post")>/
%endif
%endif
%endif
%endforeach
%if !SLibAutosarActive()
%foreach idx = LibGetNumAsyncTasks() + SLibGetNumExplictTasksInUnion()
%assign tid = idx + NumRuntimeExportedRates
%if SLibResetOrResetWithInitEventTID(tid)
%assign fcnName = "%"
%assign fcnReturns = "void"
%assign rootSystem = System[NumSystems-1]
%assign cachedTID = rootSystem.CurrentTID
%assign rootSystem.CurrentTID = tid
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(fcnName, "Reset", "%", "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(fcnName, "MemSecFuncExecute", "Pre")>/
%endif
%<LibExternInFcnDecls()>%<fcnReturns> %<fcnName>(%<SLibModelFcnArgs("Output",TLC_FALSE,tid)>);
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(fcnName, "Reset", "%", "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(fcnName, "MemSecFuncExecute", "Post")>/
%endif
%assign rootSystem.CurrentTID = cachedTID
%endif
%endforeach
%endif
%if !GenerateSampleERTMain && GenerateClassInterface && !SLibAutosarCompliant()
%<SLibCacheCodeToFile("rtmodel_hdr_defines", FcnCPPGetStaticMainMacros())>
%endif
%if SLibSystemIsModelEntryPoint(rootSystem, "") || (SLibNeedWrapperStepFcn()==2)
%if SLibNeedWrapperStepFcn()==2
%openfile switchYardDeclBuffer
%selectfile switchYardDeclBuffer
%endif
%assign rootSystem.CurrentTID = ""
%if CombineOutputUpdateFcns
%if !SLibIsExportFcnDiagram()
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(SLibModelStepFcnName(""), "Step", "", "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(SLibModelStepFcnName(""), "MemSecFuncExecute", "Pre")>/
%endif
%if (NumContStates > 0)
%<LibExternInFcnDecls()>%<SLibModelStepFcnReturn("ReturnType")> %<SLibModelStepFcnName("")>(%<SLibModelFcnArgs("UpdateContStates",TLC_FALSE,"")>);
%else
%if GenerateClassInterface && !ISEMPTY(::NamespaceName)
namespace %<::NamespaceName> {
%endif
%<LibExternInFcnDecls()>%<SLibModelStepFcnReturn("ReturnType")> %<SLibModelStepFcnName("")>(%<SLibModelFcnArgs("OutputUpdate",TLC_FALSE,"")>);
%if GenerateClassInterface && !ISEMPTY(::NamespaceName)
}
%endif
%endif
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(SLibModelStepFcnName(""), "Step", "", "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(SLibModelStepFcnName(""), "MemSecFuncExecute", "Post")>/
%endif
%endif
%else
%assign outputFcnName = FcnGetModelOutputFcnNameFromCoderDictionary("")
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(outputFcnName, "Output", "", "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(outputFcnName, "MemSecFuncExecute", "Pre")>/
%endif
%<LibExternInFcnDecls()>void %<outputFcnName>(%<SLibModelFcnArgs("Output",TLC_FALSE,"")>);
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(outputFcnName, "Output", "", "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(outputFcnName, "MemSecFuncExecute", "Post")>/
%endif
%assign outputFcnName = FcnGetModelUpdateFcnNameFromCoderDictionary("")
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(outputFcnName, "Update", "", "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(outputFcnName, "MemSecFuncExecute", "Pre")>/
%endif
%if (NumContStates > 0)
%<LibExternInFcnDecls()>void %<outputFcnName>(%<SLibModelFcnArgs("UpdateContStates",TLC_FALSE,"")>);
%else
%<LibExternInFcnDecls()>void %<outputFcnName>(%<SLibModelFcnArgs("RootUpdate",TLC_FALSE,"")>);
%endif
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(outputFcnName, "Update", "", "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(outputFcnName, "MemSecFuncExecute", "Post")>/
%endif
%endif
%if SLibNeedWrapperStepFcn()==2
%closefile switchYardDeclBuffer
%<SLibCacheCodeToFile("rtmodel_hdr_fcn_decl", switchYardDeclBuffer)>
%selectfile entryPointFcns
%endif
%endif
%if EXISTS("ExportMdlDerivativeFcn") && ExportMdlDerivativeFcn == TLC_TRUE
%assign modelDerivative = "%<Name>_derivatives"
%<SLibGetFcnMemSecPragmaOnDecl(modelDerivative, "MemSecFuncExecute", "Pre")>/
%<LibExternInFcnDecls()>void %<modelDerivative>(%<SLibModelFcnArgs("Derivative",TLC_FALSE,"")>);
%<SLibGetFcnMemSecPragmaOnDecl(modelDerivative, "MemSecFuncExecute", "Post")>/
%endif
%if !SLibAutosarActive() && IncludeMdlTerminateFcn == 1
%assign termFcnName = GenerateNonClassicInterfaceModelTermFcnName()
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(termFcnName, "Terminate", "", "Pre")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(termFcnName, "MemSecFuncInitTerm", "Pre")>/
%endif
%<LibExternInFcnDecls()>void %<termFcnName>(%<SLibModelFcnArgs("Terminate",TLC_FALSE,"")>);
%if CGMODEL_ACCESS("CGModel.isIndividualFunctionMappingEnabled")
%<SLibGetFcnMemSecPragmaForFunction(termFcnName, "Terminate", "", "Post")>/
%else
%<SLibGetFcnMemSecPragmaOnDecl(termFcnName, "MemSecFuncInitTerm", "Post")>/
%endif
%endif
%if ::GenCPP
#ifdef __cplusplus
}
#endif
%endif
%if EnableGenerated == 1
%assign modelEnable = "%<Name>_enable"
%<SLibGetFcnMemSecPragmaOnDecl(modelEnable, "MemSecFuncExecute", "Pre")>/
%<LibExternInFcnDecls()>void %<modelEnable>(%<SLibModelFcnArgs("Enable",TLC_FALSE,"")>);
%<SLibGetFcnMemSecPragmaOnDecl(modelEnable, "MemSecFuncExecute", "Post")>/
%endif
%if DisableGenerated == 1
%assign modelDisable = "%<Name>_disable"
%<SLibGetFcnMemSecPragmaOnDecl(modelDisable, "MemSecFuncExecute", "Pre")>/
%<LibExternInFcnDecls()>void %<modelDisable>(%<SLibModelFcnArgs("Disable",TLC_FALSE,"")>);
%<SLibGetFcnMemSecPragmaOnDecl(modelDisable, "MemSecFuncExecute", "Post")>/
%endif
%closefile entryPointFcns
%if !GenerateClassInterface
%<SLibCacheCodeToFile("mdl_entryPointFcn_decl", entryPointFcns)>
%endif
%undef entryPointFcns
%endif
%if GenerateGRTWrapper
%openfile entryPointFcns
/*====================*
* External functions *
*====================*/
%if ::GenCPP
#ifdef __cplusplus
%<::ExternCPrefix> {
#endif
%endif
%if !UsingMalloc
%<LibExternInFcnDecls()>%<Name>_rtModel *%<Name>(void);
%<LibExternInFcnDecls()>void MdlInitializeSizes(void);
%<LibExternInFcnDecls()>void MdlInitializeSampleTimes(void);
%<LibExternInFcnDecls()>void MdlInitialize(void);
%<LibExternInFcnDecls()>void MdlStart(void);
%<LibExternInFcnDecls()>void MdlOutputs(int_T %<::CompiledModel.GlobalScope.tTID>);
%<LibExternInFcnDecls()>void MdlUpdate(int_T %<::CompiledModel.GlobalScope.tTID>);
%<LibExternInFcnDecls()>void MdlTerminate(void);
%else
%<LibExternInFcnDecls()>%<Name>_rtModel *%<Name>(void);
%endif
%if ::GenCPP
#ifdef __cplusplus
}
#endif
%endif
%closefile entryPointFcns
%<SLibCacheCodeToFile("mdl_entryPointFcn_decl", entryPointFcns)>
%undef entryPointFcns
%endif
%openfile externDataBuf
%if SLibIsFunctionProfilingOn()
%include "prof_tlc.tlc"
%<SLibProfilerTypeDefs()>/
%endif
%<SLibGenProfTypeDef()>/
%closefile externDataBuf
%<SLibCacheCodeToFile("mdl_profiler_typedef", externDataBuf)>
%undef externDataBuf
%assign rtmRet = SLibGenRTMTypedefAndMacros()
%if !WHITE_SPACE(rtmRet[0])
%if SLibIsModelTypesModelClassNamespace()
%<SLibCacheCPPEncapModelData("Typedefs", rtmRet[0])>
%else
%<SLibCacheCodeToFile("data_rtmodel_typedef", rtmRet[0])>
%endif
%endif
%if !WHITE_SPACE(rtmRet[1])
%<SLibCacheCodeToFile("baseMdl_hdr_define", rtmRet[1])>
%endif
%if !WHITE_SPACE(rtmRet[2])
%<SLibCacheCodeToFile("baseMdl_data_decl", rtmRet[2])>
%endif
%undef rtmRet
%if GenRTModel && !EmptyRealTimeObject
%openfile opaqTypedefBuf
%<RTMsGenOpaqueTypedef(::CompiledModel.System[NumSystems-1])>/
%closefile opaqTypedefBuf
%<SLibCacheCodeToFile("mdl_data_typedef", opaqTypedefBuf)>
%undef opaqTypedefBuf
%endif
%<SLibGenRTModelHFile()>
%<SLibGenRTModelSrcFile()>
%undef baseFile
%undef isSfcnForm
%endfunction
%endif