%if EXISTS("_GRAPHMAPLIB_") == 0
%assign _GRAPHMAPLIB_ = 1
%<LibAddToCompiledModel("BlockHierarchyMapGenerated", 0)>
%function FcnMapBlockHierarchy() void
%with ::CompiledModel
%if BlockHierarchyMapGenerated == 0
%with BlockHierarchyMap
%foreach sybsysIdx = NumSubsystems
%with Subsystem[sybsysIdx]
%foreach blkIdx = NumBlocks
%with Block[blkIdx]
%foreach portIdx = NumDataInputPorts
%<FcnMapPort(DataInputPort[portIdx])>
%endforeach
%foreach portIdx = NumControlInputPorts
%<FcnMapPort(ControlInputPort[portIdx])>
%endforeach
%foreach portIdx = NumDataOutputPorts
%<FcnMapPort(DataOutputPort[portIdx])>
%endforeach
%foreach paraIdx = NumParameters
%<FcnMapParameter(Parameter[paraIdx])>
%endforeach
%foreach dstateIdx = NumDiscStates
%<FcnMapDState(DiscState[dstateIdx])>
%endforeach
%foreach cstateIdx = NumContStates
%<FcnMapCState(ContState[cstateIdx])>
%endforeach
%foreach cderivIdx = NumDerivatives
%<FcnMapCStateDerivatives(Derivative[cderivIdx])>
%endforeach
%foreach dstoreIdx = NumDataStores
%<FcnMapDStore(DataStore[dstoreIdx])>
%endforeach
%endwith
%endforeach
%endwith
%endforeach
%assign useDatasetLoggingHier = TLC_FALSE
%if IsModelReferenceSimTarget() && EXISTS(NumSignalHierLoggingInfo) && (NumSignalHierLoggingInfo > 0)
%assign useDatasetLoggingHier = TLC_TRUE
%endif
%if IsModelReferenceSimTarget() && !useDatasetLoggingHier && EXISTS(NumSignalHierarchyDescriptors)
%foreach shdIdx = NumSignalHierarchyDescriptors
%with SignalHierarchyDescriptor[shdIdx]
%foreach hnIdx = NumHierarchyNodes
%<FcnMapPortSigHier(HierarchyNode[hnIdx])>
%endforeach
%endwith
%endforeach
%endif
%endwith
%assign ::CompiledModel.BlockHierarchyMapGenerated = 1
%endif
%endwith
%endfunction
%function SLibSystemBlockExist(grBlock) void
%return (ISFIELD(grBlock, "_blkref") && grBlock._blkref[2] != -1) ? ...
TLC_TRUE : TLC_FALSE
%endfunction
%function SLibGraphicalBlockExist(block) void
%return (ISFIELD(block, "GrSrc") && block.GrSrc[1] != -1) ? ...
TLC_TRUE : TLC_FALSE
%endfunction
%function SLibGetGraphicalBlockIdx(block) void
%return ISFIELD(block, "GrSrc") ? block.GrSrc : [-1, -1]
%endfunction
%function SLibGetSystemBlockIdx(grBlock) void
%return ISFIELD(grBlock, "_blkref") ? grBlock._blkref : [-1, -1, -1]
%endfunction
%function FcnMapPort(port) void
%assign portObj = SLibCreateDummyPortRecord()
%with port
%if IsModelReferenceSimTarget()
%foreach regIdx = NumRegions
%with Region[regIdx]
%if (Type == "Bus" || !ISEMPTY("SigHierIdx"))
%continue
%endif
%assign portObj.SignalSrc = _Source
%assign sigRec = SLibGetSourceRecord(portObj, 0)
%if !ISEMPTY(sigRec)
%assign Region[regIdx].MemoryMapIdx = sigRec.MemoryMapIdx
%endif
%endwith
%endforeach
%else
%foreach regIdx = NumRegions
%assign portObj.SignalSrc = Region[regIdx]._Source
%assign sigRec = SLibGetSourceRecord(portObj, 0)
%if !ISEMPTY(sigRec)
%assign Region[regIdx].MemoryMapIdx = sigRec.MemoryMapIdx
%endif
%endforeach
%endif
%endwith
%endfunction
%function FcnMapPortSigHier(sigHierNode) void
%assign portObj = SLibCreateDummyPortRecord()
%with sigHierNode
%foreach regIdx = NumRegions
%with Region[regIdx]
%if (!ISEMPTY("SigHierIdx"))
%continue
%endif
%assign portObj.SignalSrc = _Source
%assign sigRec = SLibGetSourceRecord(portObj, 0)
%if !ISEMPTY(sigRec)
%assign Region[regIdx].MemoryMapIdx = sigRec.MemoryMapIdx
%endif
%endwith
%endforeach
%endwith
%endfunction
%function FcnMapParameter(parameter) void
%if parameter._idx > -1
%assign parameter.MemoryMapIdx = ...
ModelParameters.Parameter[parameter._idx].MemoryMapIdx
%endif
%endfunction
%function FcnMapDState(dstate) void
%if dstate._idx > -1
%assign dstate.MemoryMapIdx = ...
::CompiledModel.DWorks.DWork[dstate._idx].MemoryMapIdx
%endif
%endfunction
%function FcnMapCState(cstate) void
%assign cstate.MemoryMapIdx = ...
::CompiledModel.ContStates.ContState[cstate._idx].MemoryMapIdx
%endfunction
%function FcnMapCStateDerivatives(cderiv) void
%assign cderiv.MemoryMapIdx = ...
::CompiledModel.ContStates.ContState[cderiv._idx].DerivativeMemoryMapIdx
%endfunction
%function FcnMapDStore(dstore) void
%if dstore._idx > -1
%assign dstore.MemoryMapIdx = ...
::CompiledModel.DWorks.DWork[dstore._idx].MemoryMapIdx
%endif
%endfunction
%endif