%selectfile NULL_FILE
%if EXISTS("_PRM_EXPORTEDGLOBAL_") == 0
%assign _PRM_EXPORTEDGLOBAL_ = 1
%include "prm_cacheutils.tlc"
%function SLibCacheExportedGlobalPrmBuffers(startIdx) void
%<SLibCreatePrmBuffer("ExportedGlobal", "Decl")>
%<SLibCreatePrmBuffer("ExportedGlobal", "Instance")>
%assign declBuffer = FcnGenExportedGlobalPrmDecl(startIdx)
%<SLibSetPrmBufferPart("ExportedGlobal", "Decl", "Code", declBuffer)>
%assign rootSystem = ::CompiledModel.System[NumSystems-1]
%assign reqInsts = LibGetSystemField(rootSystem,"ReqRootPrmHdrDataInsts")
%assign instanceBuffer = ""
%assign instanceBuffer = FcnGenExportedGlobalPrmInstance(startIdx)
%<SLibSetPrmBufferPart("ExportedGlobal", "Instance", "Code", instanceBuffer)>
%endfunction
%function FcnGenExportedGlobalPrmDecl(startIdx) void
%assign cacheBuffer = ""
%foreach prmIdx = NumExportedGlobal
%assign mdlParam = Parameter[startIdx + prmIdx]
%assert !LibRecordHasSymbolicWidth(mdlParam)
%assign cacheBuffer = cacheBuffer + SLibGenModelParamDecl(mdlParam, TLC_FALSE)
%endforeach
%return cacheBuffer
%endfunction
%function FcnGenExportedGlobalPrmInstance(startIdx) void
%assign cacheBuffer = ""
%assign reqInsts = LibGetSystemField(rootSystem,"ReqRootPrmHdrDataInsts")
%foreach prmIdx = NumExportedGlobal
%assign mdlParam = Parameter[startIdx + prmIdx]
%if (reqInsts.ExpGlobalPrmsInst || mdlParam.IsGlobal == TLC_FALSE)
%assign cacheBuffer = cacheBuffer + SLibGenUnstrModelParamInstance(mdlParam, TLC_FALSE)
%endif
%endforeach
%return cacheBuffer
%endfunction
%endif