%selectfile NULL_FILE
%function LibGetNumSourceFiles() void
%return LibGetNumModelFiles()
%endfunction
%function LibGetSourceFileTag(fileIdx) void
%return LibGetModelFileTag(fileIdx)
%endfunction
%function LibCreateSourceFileAtPath(type,creator,namewithpath,basename) void
%assign type = (type == "Source") ? "SystemBody" : "SystemHeader"
%return SLibAddModelFileWithBasename(type,creator,namewithpath,basename)
%endfunction
%function LibCreateSourceFile(type,creator,name) void
%assign type = (type == "Source") ? "SystemBody" : "SystemHeader"
%return SLibAddModelFile(type,creator,name)
%endfunction
%function LibGetSourceFileFromIdx(fileIdx) void
%return ModelFiles.ModelFile[fileIdx]
%endfunction
%function LibSetSourceFileSection(fileH, section, value) void
%if TYPE(fileH) != "Scope"
%if TYPE(fileH) == "Number"
%assign fileH = ModelFiles.ModelFile[fileH]
%else
%assign errTxt = "LibSetSourceFileSection expects a reference or " ...
"and index to a file. It was passed a %<TYPE(fileH)>"
%<LibReportError(errTxt)>
%endif
%endif
%if section == "ExternData" || section == "ExternFcns" || section == "FcnPrototypes"
%assign errTxt = "%<section> is reserved for Simulink Coder."
%setcommandswitch "-v1"
%<LibReportError(errTxt)>
%endif
%<SLibSetModelFileAttribute(fileH,section,value)>
%endfunction
%function LibGetSourceFileSection(fileIdx, section) void
%if TYPE(fileIdx) != "Number"
%if TYPE(fileIdx) == "Scope"
%assign fileIdx = fileIdx.Index
%else
%assign errTxt = "LibGetSourceFileSection expects an index or a " ...
"reference to a file."
%<LibReportError(errTxt)>
%endif
%endif
%return LibGetModelFileAttribute(fileIdx,section)
%endfunction
%function LibGetSourceFileIndent(fileIdx) void
%if TYPE(fileIdx) != "Number"
%if TYPE(fileIdx) == "Scope"
%assign fileIdx = fileIdx.Index
%else
%assign errTxt = "LibGetSourceFileSection expects an index or a " ...
"reference to a file."
%<LibReportError(errTxt)>
%endif
%endif
%return SLibDirectAccessGetFileAttribute(ModelFiles.ModelFile[fileIdx], "Indent")
%endfunction
%function LibGetSourceFileShared(fileIdx) void
%if TYPE(fileIdx) != "Number"
%if TYPE(fileIdx) == "Scope"
%assign fileIdx = fileIdx.Index
%else
%assign errTxt = "LibGetSourceFileSection expects an index or a " ...
"reference to a file."
%<LibReportError(errTxt)>
%endif
%endif
%return SLibDirectAccessGetFileAttribute(ModelFiles.ModelFile[fileIdx], "Shared")
%endfunction
%function LibGetSourceFileSharedType(fileIdx) void
%if TYPE(fileIdx) != "Number"
%if TYPE(fileIdx) == "Scope"
%assign fileIdx = fileIdx.Index
%else
%assign errTxt = "LibGetSourceFileSection expects an index or a " ...
"reference to a file."
%<LibReportError(errTxt)>
%endif
%endif
%return SLibDirectAccessGetFileAttribute(ModelFiles.ModelFile[fileIdx], "SharedType")
%endfunction
%function LibIndentSourceFile(fileName,modelName) void
%<SLibIndentFile(fileName,modelName)>
%endfunction
%function LibSetSourceFileCodeTemplate(opFile,name) void
%<SLibSetModelFileAttribute(opFile,"CodeTemplate",name)>
%endfunction
%function LibSetSourceFileOutputDirectory(opFile,name) void
%<SLibSetModelFileAttribute(opFile,"OutputDirectory",name)>
%endfunction
%function LibCallModelInitialize() void
%openfile tmpFcnBuf
%<GenerateModelInitFcnName()>(%<SLibModelFcnArgs("Initialize",TLC_TRUE,"")>);
%closefile tmpFcnBuf
%return tmpFcnBuf
%endfunction
%function LibCallModelStep(tid) void
%assign rootSystem.CurrentTID =tid
%openfile tmpFcnBuf
%<FcnCallMdlStep(tid)>
%closefile tmpFcnBuf
%return tmpFcnBuf
%endfunction
%function LibCallModelTerminate() void
%openfile tmpFcnBuf
%if IncludeMdlTerminateFcn
%<::CompiledModel.Name>_terminate(%<SLibModelFcnArgs("Terminate",TLC_TRUE,"")>);
%endif
%closefile tmpFcnBuf
%return tmpFcnBuf
%endfunction
%function LibCallSetEventForThisBaseStep(buffername) void
%return EventFlagsFunction("%<::CompiledModel.Name>_", buffername)
%endfunction
%function LibWriteModelData() void
%return SLibDeclareModelFcnArgs(TLC_TRUE)
%endfunction
%function LibSetRTModelErrorStatus(str) void
%return RTMSetErrStat(str)
%endfunction
%function LibGetRTModelErrorStatus() void
%return RTMGetErrStat()
%endfunction
%function LibIsSingleRateModel() void
%assign rootSystem = System[NumSystems-1]
%return LibIsSingleRateSystem(rootSystem)
%endfunction
%function LibGetMdlSrcBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelSourceFile")
%endfunction
%function LibGetMdlPubHdrBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelHeaderFile")
%endfunction
%function LibGetMdlPrvHdrBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelPrivateFile")
%endfunction
%function LibGetMdlDataSrcBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelDataFile")
%endfunction
%function LibGetMdlTypesHdrBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelTypesFile")
%endfunction
%function LibGetMdlCapiHdrBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelCapiHdrFile")
%endfunction
%function LibGetMdlCapiSrcBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelCapiSrcFile")
%endfunction
%function LibGetMdlCapiHostHdrBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelCapiHostHdrFile")
%endfunction
%function LibGetMdlTestIfHdrBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelTestIfHdrFile")
%endfunction
%function LibGetMdlTestIfSrcBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelTestIfSrcFile")
%endfunction
%function LibGetDataTypeTransHdrBaseName() void
%return CGMODEL_ACCESS("FileRepository.getModelFileName","ModelExtModeDataInterfaceFile")
%endfunction
%function LibGetModelDotCFile() void
%assign modelSrcName = LibGetMdlSrcBaseName()
%return LibCreateSourceFile("Source","Simulink",modelSrcName)
%endfunction
%function LibGetModelDotHFile() void
%assign modelHdrName = LibGetMdlPubHdrBaseName()
%return LibCreateSourceFile("Header","Simulink",modelHdrName)
%endfunction
%function () void
%return "rte"
%endfunction
%function LibGetRTESourceFileName() void
%return "rte"
%endfunction
%function LibIsSingleTasking() void
%return SLibSingleTasking()
%endfunction
%function LibWriteModelInput(tid,rollThreshold) void
%if IsModelReferenceTarget()
%assign errTxt = "LibWriteModelInput may not be called for referenced " + ...
"models; you may wish to guard its invocation with !IsModelReferenceTarget()."
%<LibReportError(errTxt)>
%endif
%openfile tmpFcnBuf
%if MultiInstanceERTCode && !RootIOStructures
%assign localUQualifier = "_"
%else
%assign localUQualifier = "."
%endif
%foreach idx = ExternalInputs.NumExternalInputs
%assign extInp = ::CompiledModel.ExternalInputs.ExternalInput[idx]
%with extInp
%if TID == tid
%assign rhs = "your_value"
/* InportID: %<idx>, TaskID: %<tid> */
%assign id = LibGetRecordIdentifier(extInp)
%assign optStr = ""
%if StorageClass == "Auto"
%assign optStr = "%<LibGetExternalInputStruct()>%<localUQualifier>"
%endif
%if StorageClass == "ImportedExternPointer"
%assign id = "%<id>_value"
%endif
%assign portWidth = LibGetRecordWidth(extInp)
%assign isComplex = LibGetRecordIsComplex(extInp)
%if portWidth == 1
%if isComplex
%<optStr>%<id>.re = %<rhs>;
%<optStr>%<id>.im = %<rhs>;
%else
%<optStr>%<id> = %<rhs>;
%endif
%elseif portWidth < rollThreshold
%foreach sigIdx = portWidth
%if isComplex
%<optStr>%<id>[%<sigIdx>].re = %<rhs>;
%<optStr>%<id>[%<sigIdx>].im = %<rhs>;
%else
%<optStr>%<id>[%<sigIdx>] = %<rhs>;
%endif
%endforeach
%else
{
int i = 0;
for(i = 0; i < %<portWidth>; i++) {
%if isComplex
%<optStr>%<id>[i].re = %<rhs>;
%<optStr>%<id>[i].im = %<rhs>;
%else
%<optStr>%<id>[i] = %<rhs>;
%endif
}
}
%endif
%endif
%endwith
%endforeach
%closefile tmpFcnBuf
%return tmpFcnBuf
%endfunction
%function LibWriteModelOutput(tid,rollThreshold) void
%if IsModelReferenceTarget()
%assign errTxt = "LibWriteModelOutput may not be called for referenced " + ...
"models; you may wish to guard its invocation with !IsModelReferenceTarget()."
%<LibReportError(errTxt)>
%endif
%openfile tmpFcnBuf
%if MultiInstanceERTCode && !RootIOStructures
%assign localYQualifier = "_"
%else
%assign localYQualifier = "."
%endif
%assign lhs = "your_variable"
%foreach idx = ExternalOutputs.NumExternalOutputs
%assign extOut = ExternalOutputs.ExternalOutput[idx]
%assign sysIdx = extOut.Block[0]
%assign blkIdx = extOut.Block[1]
%assign outportBlock = System[sysIdx].Block[blkIdx]
%with System[sysIdx]
%with outportBlock
%if tid == SLibGetNumericTID(outportBlock)
%assign portWidth = LibBlockInputSignalWidth(0)
%assign id = LibGetRecordIdentifier(outportBlock)
/* OutportID: %<idx>, TaskID: %<tid> */
%if portWidth == 1
%if SLibExternalOutputIsVirtual(outportBlock)
%<lhs> = %<LibBlockInputSignal(0, "", "", 0)>;
%else
%<lhs> = %<LibGetExternalOutputStruct()>%<localYQualifier>%<id>;
%endif
%elseif portWidth < rollThreshold
%foreach sigIdx = portWidth
%if SLibExternalOutputIsVirtual(outportBlock)
%<lhs> = %<LibBlockInputSignal(0, "", "", sigIdx)>;
%else
%<lhs> = %<LibGetExternalOutputStruct()>%<localYQualifier>%<id>[%<sigIdx>];
%endif
%endforeach
%else
{
int i = 0;
for(i = 0; i < %<portWidth>; i++) {
%if SLibExternalOutputIsVirtual(outportBlock)
%<lhs>[i] = %<LibBlockInputSignal(0, "i", "", 0)>;
%else
%<lhs>[i] = %<LibGetExternalOutputStruct()>%<localYQualifier>%<id>[i];
%endif
}
}
%endif
%endif
%endwith
%endwith
%endforeach
%closefile tmpFcnBuf
%return tmpFcnBuf
%endfunction
%function LibWriteModelInputs() void
%if IsModelReferenceTarget()
%assign errTxt = "LibWriteModelInputs may not be called for referenced " + ...
"models; you may wish to guard its invocation with !IsModelReferenceTarget()."
%<LibReportError(errTxt)>
%endif
%openfile varbufs
%foreach tid = LibNumRuntimeExportedRates()
%<LibWriteModelInput(tid,RollThreshold)>/
%endforeach
%closefile varbufs
%if WHITE_SPACE(varbufs)
%return ""
%else
%openfile tmpFcnBuf
#if 0
%<varbufs>/
#endif
%closefile tmpFcnBuf
%return tmpFcnBuf
%endif
%endfunction
%function LibWriteModelOutputs() void
%if IsModelReferenceTarget()
%assign errTxt = "LibWriteModelOutputs may not be called for referenced " + ...
"models; you may wish to guard its invocation with !IsModelReferenceTarget()."
%<LibReportError(errTxt)>
%endif
%openfile varbufs
%foreach tid = LibNumRuntimeExportedRates()
%<LibWriteModelOutput(tid,RollThreshold)>/
%endforeach
%closefile varbufs
%if WHITE_SPACE(varbufs)
%return ""
%else
%openfile tmpFcnBuf
#if 0
%<varbufs>/
#endif
%closefile tmpFcnBuf
%return tmpFcnBuf
%endif
%endfunction
%function LibNumDiscreteSampleTimes() void
%return ::CompiledModel.NumSynchronousSampleTimes - LibIsContinuous(0)
%endfunction
%function LibGetTID01EQ() void
%return ::CompiledModel.FixedStepOpts.TID01EQ
%endfunction
%function LibGetSampleTimePeriodAndOffset(tid, idx) void
%return ::CompiledModel.SampleTime[tid].PeriodAndOffset[idx]
%endfunction
%function LibNumRuntimeExportedRates() void
%return ::CompiledModel.NumRuntimeExportedRates
%endfunction
%function LibNumSynchronousSampleTimes() void
%return ::CompiledModel.NumSynchronousSampleTimes
%endfunction
%function LibNumAsynchronousSampleTimes() void
%return ::CompiledModel.NumAsynchronousSampleTimes
%endfunction
%function LibAddSourceFileCustomSection(file,builtInSection,newSection) void
%if !SLibIsERTTarget()
%assign errTxt = "LibAddSourceFileCustomSection is only available with " ...
"ERT-based (Embedded Coder) targets."
%<LibReportError(errTxt)>
%endif
%
%endfunction
%function LibIsSourceFileCustomSection(file, sectionName) void
%return IS_CUSTOM_SECTION(file.Index, sectionName)
%endfunction
%function LibSetSourceFileVariantCustomSection(file,attrib,value) void
%if TYPE(file) != "Scope"
%if TYPE(file) == "Number"
%assign file = ModelFiles.ModelFile[file]
%else
%assign errTxt = "LibSetSourceFileCustomSection expect a " ...
"reference or an index to a file. It was passed a: " ...
"%<TYPE(file)>"
%<LibReportError(errTxt)>
%endif
%endif
%if ISEMPTY(value)
%assign value = ""
%endif
%
%endfunction
%function LibSetSourceFileCustomSection(file,attrib,value) void
%if TYPE(file) != "Scope"
%if TYPE(file) == "Number"
%assign file = ModelFiles.ModelFile[file]
%else
%assign errTxt = "LibSetSourceFileCustomSection expect a " ...
"reference or an index to a file. It was passed a: " ...
"%<TYPE(file)>"
%<LibReportError(errTxt)>
%endif
%endif
%if ISEMPTY(value)
%assign value = ""
%endif
%
%endfunction
%function LibGetSourceFileCustomSection(file,attrib) void
%if TYPE(file) != "Scope"
%if TYPE(file) == "Number"
%assign file = ModelFiles.ModelFile[file]
%else
%assign errTxt = "LibGetSourceFileCustomSection expect a " ...
"reference or an index to a file. It was passed a: " ...
"%<TYPE(file)>"
%endif
%endif
%assign retVal = GET_CUSTOM_SECTION_CONTENT(file.Index, attrib)
%return retVal
%endfunction
%with ::CompiledModel
%addtorecord ::CompiledModel /
ModelFiles { /
NumModelFiles 0 /
NumSupportFiles 0 /
ComplianceLevel -1 /
}
%endwith
%function SLibGetTag(type, name) void
%assign name = LibConvertNameToIdentifier(name)
%switch type
%case "SystemHeader"
%assign tag = "%<name>_h"
%break
%case "SystemBody"
%assign tag = "%<name>_c"
%break
%default
%assign errTxt = "unknown type: %<type>"
%<LibReportFatalError(errTxt)>
%endswitch
%return tag
%endfunction
%function SLibSectionIsInFileContents(fileRec, sectionName) void
%switch sectionName
%case "Banner"
%case "Includes"
%case "ModelTypesIncludes"
%case "ModelTypesDefines"
%case "Defines"
%case "ModelTypesTypedefs"
%case "IntrinsicTypes"
%case "PrimitiveTypedefs"
%case "UserTop"
%case "Typedefs"
%case "GuardedIncludes"
%case "Enums"
%case "Definitions"
%case "ExternData"
%case "ExternFcns"
%case "FcnPrototypes"
%case "Declarations"
%case "Functions"
%case "CompilerErrors"
%case "CompilerWarnings"
%case "Documentation"
%case "UserBottom"
%return TLC_TRUE
%default
%return TLC_FALSE
%endswitch
%endfunction
%function SLibSetSourceFileCustomTokenInUse(fileIdx,token) void
%
%endfunction
%function LibGetFileRecordName(fileRec) void
%return GET_FILE_ATTRIBUTE(fileRec.Index, "NameWithoutExtension")
%endfunction
%function FcnAppendMissingTokens(opFile,section) void
%
%endfunction
%function SLibDoesModelFileExist(type,name) void
%assign fullName = SLibGetFullFileName(name, type)
%assign fileIdx = SOURCE_FILE_EXISTS(fullName)
%if fileIdx >= 0
%assign mf = ModelFiles.ModelFile[fileIdx]
%return mf
%else
%return ""
%endif
%endfunction
%function SLibFileContainsImportedSharedType(fileIdx) void
%assign filter = LibGetModelFileAttribute(fileIdx,"Filter")
%assign isSharedType = LibGetSourceFileSharedType(fileIdx)
%assign isImportedSharedTypeFile = filter && isSharedType
%return isImportedSharedTypeFile
%endfunction
%function SLibAddGeneratedFileToList(filename, category, type, dir) void
%assign tmpMdlHeaderFileName = LibGetMdlPubHdrBaseName()
%assign tmpMdlSourceFileName = LibGetMdlSrcBaseName()
%if (type == "header" && FEVAL("strncmp", filename, tmpMdlHeaderFileName + ".", SIZE(tmpMdlHeaderFileName,1)+1)) || ...
(type == "source" && FEVAL("strncmp", filename, tmpMdlSourceFileName + ".", SIZE(tmpMdlSourceFileName,1)+1))
%assign category = "model"
%endif
%assign errTxt = FEVAL("coder.internal.slcoderReport", "addFileInfo", ...
LibGetModelName(), filename, category, type, dir)
%endfunction
%function SLibAddModelFile(type, creator, name) void
%return SLibAddModelFileWithBasename(type, creator, name, name)
%endfunction
%function SLibGetFullFileName(name, type)
%assign headerExt = ".h"
%assign sourceExt = "." + ::LangFileExt
%assign extension = type == "SystemHeader" ? headerExt : sourceExt
%return "%<name>%<extension>"
%endfunction
%function SLibSynchronizeFileRepWithFileRecords() void
%assign numFileRecords = ::CompiledModel.ModelFiles.NumModelFiles
%foreach fileIdx = LibGetNumSourceFiles()
%if fileIdx >= numFileRecords
%addtorecord ::CompiledModel.ModelFiles /
ModelFile { /
Index fileIdx /
}
%assign ::CompiledModel.ModelFiles.NumModelFiles = ::CompiledModel.ModelFiles.NumModelFiles + 1
%assign type = GET_FILE_ATTRIBUTE(fileIdx, "Type")
%if ERTCustomFileBanners
%assign template = (type == "SystemBody") ? ...
ERTSrcFileBannerTemplate : ERTHdrFileBannerTemplate
%else
%assign template = "rtw_code.tlc"
%endif
%assign success = SET_FILE_ATTRIBUTE(fileIdx, "CodeTemplate", template)
%endif
%endforeach
%endfunction
%function SLibAssignCustomCodeTemplates() void
%if LibGetNumSourceFiles() > 0 && ISFIELD(::CompiledModel,"DataObjectUsage")
%foreach fileIdx = ::CompiledModel.DataObjectUsage.NumFiles[0]
%assign dataObjectFileRec = ::CompiledModel.DataObjectUsage.File[fileIdx]
%if dataObjectFileRec.IsCustom == "yes"
%assign type = dataObjectFileRec.Type
%if type == "header"
%assign type = "SystemHeader"
%elseif type == "source"
%assign type = "SystemBody"
%endif
%assign modelFile = SLibDoesModelFileExist(type, dataObjectFileRec.Name)
%if !ISEMPTY(modelFile) && !WHITE_SPACE(modelFile)
%if dataObjectFileRec.Type == "header"
%<LibSetSourceFileCodeTemplate(modelFile, ERTDataHdrFileTemplate)>
%else
%<LibSetSourceFileCodeTemplate(modelFile, ERTDataSrcFileTemplate)>
%endif
%endif
%endif
%endforeach
%endif
%endfunction
%function FcnReturnExistingFile(fileIndex, type, creator, name) void
%assign mf = ::CompiledModel.ModelFiles.ModelFile[fileIndex]
%assign existingCreator = SLibDirectAccessGetFileAttribute(mf, "Creator")
%assign existingGroup = SLibDirectAccessGetFileAttribute(mf, "Group")
%assign existingType = SLibDirectAccessGetFileAttribute(mf, "Type")
%if creator != existingCreator
%if type == "SystemHeader" && existingGroup == "utility" && existingType == "SystemHeader"
%<SLibReportErrorWithIdAndArgs("RTW:tlc:ErrWhenGenSharedDataConflictModelFile", "%<name>"+".h")>
%else
%assign errTxt = "%<creator> is attempting to create " ...
"file %<name>, however, this file was already created " ...
"by %<existingCreator>."
%<LibReportFatalError(errTxt)>
%endif
%else
%return mf
%endif
%endfunction
%function SLibAddModelFileWithBasename(type, creator, name, basename) void
%if ERTCustomFileBanners
%assign template = (type == "SystemBody") ? ...
ERTSrcFileBannerTemplate : ERTHdrFileBannerTemplate
%else
%assign template = "rtw_code.tlc"
%endif
%assign fullName = SLibGetFullFileName(name, type)
%assign findIdx = SOURCE_FILE_EXISTS(fullName)
%if findIdx == -1 && type == "SystemHeader"
%assign findIdx = SOURCE_FILE_EXISTS("%<basename>.h")
%endif
%if findIdx != -1
%return FcnReturnExistingFile(findIdx, type, creator, name)
%endif
%assign fileIdx = CREATE_SOURCE_FILE(fullName)
%assign success = SET_FILE_ATTRIBUTE(fileIdx, "Type", type)
%assign success = SET_FILE_ATTRIBUTE(fileIdx, "Creator", creator)
%assign success = SET_FILE_ATTRIBUTE(fileIdx, "CodeTemplate", template)
%if name != basename
%assign success = SET_FILE_ATTRIBUTE(fileIdx, "BaseName", basename)
%endif
%return LibUpdateCompiledModelFiles(fileIdx)
%endfunction
%function LibUpdateCompiledModelFiles(fileIdx) void
%addtorecord ::CompiledModel.ModelFiles /
ModelFile { /
Index fileIdx /
}
%assign ::CompiledModel.ModelFiles.NumModelFiles = ::CompiledModel.ModelFiles.NumModelFiles + 1
%return ::CompiledModel.ModelFiles.ModelFile[fileIdx]
%endfunction
%function SLibSetContentsAttribute(opFile, c, attrib, value) void
%if !WHITE_SPACE(value)
%assign success = SET_FILE_ATTRIBUTE(opFile.Index, attrib, value)
%endif
%endfunction
%function SLibDirectAccessGetFileAttribute(file, attrib) void
%return GET_FILE_ATTRIBUTE(file.Index, attrib)
%endfunction
%function SLibDirectAccessSetFileAttribute(file, attrib, value) void
%assign success = SET_FILE_ATTRIBUTE(file.Index, attrib, value)
%endfunction
%function SLibDirectAccessGetFileContent(file, attrib) void
%return GET_FILE_ATTRIBUTE(file.Index, attrib)
%endfunction
%function SLibDirectAccessSetFileContent(file, attrib, value) void
%assign success = SET_FILE_ATTRIBUTE(file.Index, attrib, value)
%endfunction
%function FcnAddCoderTypesFilesToRequiredIncludes(opFile) void
%if SLibGetModelFileDeferredIncludeCoderTypes(opFile)
%if LibGetModelFileAttribute(opFile.Index, "Group") == "utility"
%assign files = []
%assign files = files + SLibCoderTypesFilename()
%assign rtwCtx = ::CompiledModel.RTWContext
%assign fileBaseName = SLibDirectAccessGetFileAttribute(opFile, "BaseName")
%assign isMultiword = SLibIsHostBasedSimulationTarget() ? ...
TLC_TRUE : ...
FEVAL("rtwprivate", "retrieveMultiWordUtilitiesAndFunctions", "%<MasterSharedCodeManagerFile>", rtwCtx, fileBaseName)
%if isMultiword
%assign files = files + SLibCoderMultiwordTypesFilename()
%endif
%if SLibDeclareHalfPrecisionUsage()
%assign files = files + SLibCoderHalfTypeHdrFilename()
%endif
%else
%assign files = SLibUsedCoderTypesFilenames()
%endif
%foreach fIdx = SIZE(files, 1)
%<SLibSetModelFileAttribute(opFile, "RequiredIncludes", files[fIdx])>
%endforeach
%endif
%endfunction
%function LibWriteFileSectionToDisk(fileIndex, attrib) Output
%assign opFile = ModelFiles.ModelFile[fileIndex]
%if attrib == "Includes"
%<FcnAddCoderTypesFilesToRequiredIncludes(opFile)>
%endif
%
%endfunction
%function LibClearFileSectionContents(fileIndex,attrib) void
%if TYPE(fileIndex) != "Number"
%if TYPE(fileIndex) == "Scope"
%assign fileIndex = fileIndex.Index
%else
%assign errTxt = "LibClearFileSectionContents expects an index or a" ...
" reference to a file."
%<LibReportError(errTxt)>
%endif
%endif
%
%endfunction
%function SLibSetModelFileAttribute(opFile,attrib,value) void
%assign c = ""
%if attrib == "Filter"
%assert (value == 1)
%elseif attrib == "WrittenToDisk"
%assert (value == TLC_TRUE)
%endif
%assign success = SET_FILE_ATTRIBUTE(opFile.Index, attrib, value)
%endfunction
%function SLibSetModelFileAttributeWithRequiredInclude(opFile,attrib,value,incl) void
%if !WHITE_SPACE(value) && !WHITE_SPACE(incl)
%<SLibSetModelFileAttribute(opFile, "RequiredIncludes", incl)>
%endif
%<SLibSetModelFileAttribute(opFile, attrib, value)>
%endfunction
%function SLibGetModelFileIndent(opFile) void
%return SLibDirectAccessGetFileAttribute(opFile, "Indent")
%endfunction
%function SLibSetModelFileIndent(opFile, setting) void
%<SLibDirectAccessSetFileAttribute(opFile, "Indent", setting)>
%endfunction
%function SLibGetModelFileShared(opFile) void
%return SLibDirectAccessGetFileAttribute(opFile, "Shared")
%endfunction
%function SLibSetModelFileShared(opFile, setting) void
%<SLibDirectAccessSetFileAttribute(opFile, "Shared", setting)>
%endfunction
%function SLibGetModelFileSharedType(opFile) void
%return SLibDirectAccessGetFileAttribute(opFile, "SharedType")
%endfunction
%function SLibSetModelFileSharedType(opFile, setting) void
%<SLibDirectAccessSetFileAttribute(opFile, "SharedType", setting)>
%endfunction
%function SLibGetModelFileDeferredIncludeCoderTypes(opFile) void
%return SLibDirectAccessGetFileAttribute(opFile, "DeferredIncludeCoderTypes")
%endfunction
%function SLibSetModelFileDeferredIncludeCoderTypes(opFile, setting) void
%<SLibDirectAccessSetFileAttribute(opFile, "DeferredIncludeCoderTypes", setting)>
%endfunction
%function SLibGetModelFileIsEmpty(opFile) void
%return SLibDirectAccessGetFileAttribute(opFile, "IsEmpty")
%endfunction
%function LibGetNumModelFiles() void
%return NUM_SOURCE_FILES()
%endfunction
%function LibGetModelFileTag(fileIdx) void
%assign mf = ModelFiles.ModelFile[fileIdx]
%assign baseName = SLibDirectAccessGetFileAttribute(mf, "BaseName")
%assign fileType = SLibDirectAccessGetFileAttribute(mf, "Type")
%assign ext = fileType == "SystemBody" ? "_c" : "_h"
%return "%<baseName>%<ext>"
%endfunction
%function (fileIdx) void
%assign opFile = LibGetSourceFileFromIdx(fileIdx)
%if LibGetModelFileAttribute(fileIdx,"Type") != "SystemHeader"
%return 0
%elseif LibGetSourceFileShared(fileIdx)
%return 0
%else
%assign coderTypesFiles = SLibPotentialCoderTypesBaseNames()
%assign nameForCompare = LibGetFileRecordName(opFile)
%foreach fIdx = SIZE(coderTypesFiles, 1)
%assign coderTypesFile = coderTypesFiles[fIdx]
%if nameForCompare == coderTypesFile
%return 0
%endif
%endforeach
%endif
%if CodeFormat == "S-Function"
%assign tag = LibGetModelFileTag(fileIdx)
%assign mdlName = LibGetModelName()
%return tag != "%<mdlName>_mid_h" && tag != "%<mdlName>_sid_h"
%else
%return 1
%endif
%endfunction
%function LibGetSourceFileAttribute(fileIdx, attrib)
%if TYPE(fileIdx) != "Number"
%if TYPE(fileIdx) == "Scope"
%assign fileIdx = fileIdx.Index
%else
%assign errTxt = "LibGetSourceFileSection expects an index or a " ...
"reference to a file."
%<LibReportError(errTxt)>
%endif
%endif
%switch attrib
%case "Name"
%case "BaseName"
%case "Type"
%case "Creator"
%case "Filter"
%case "IsEmpty"
%case "OutputDirectory"
%case "Group"
%case "WrittenToDisk"
%case "CodeTemplate"
%return LibGetModelFileAttribute(fileIdx,attrib)
%case "SystemsInFile"
%case "RequiredIncludes"
%case "UtilityIncludes"
%case "Indent"
%case "Shared"
%case "SharedType"
%assign opFile = ModelFiles.ModelFile[fileIdx]
%return SLibDirectAccessGetFileAttribute(opFile, attrib)
%default
%assign errTxt = "Unknown file attribute: %<attrib>"
%<LibReportFatalError(errTxt)>
%endswitch
%endfunction
%function LibGetModelFileAttribute(fileIdx, attrib) void
%assign opFile = ModelFiles.ModelFile[fileIdx]
%if ISFIELD(opFile,"Contents")
%assign c = opFile.Contents
%endif
%switch attrib
%case "Name"
%case "NameWithoutExtension"
%return GET_FILE_ATTRIBUTE(opFile.Index, attrib)
%case "BaseName"
%assign baseName = GET_FILE_ATTRIBUTE(opFile.Index, "BaseName")
%assign type = GET_FILE_ATTRIBUTE(opFile.Index, "Type")
%return SLibGetFullFileName(baseName, type)
%case "Type"
%case "Creator"
%case "Filter"
%case "IsEmpty"
%case "OutputDirectory"
%case "Group"
%case "WrittenToDisk"
%case "CodeTemplate"
%return SLibDirectAccessGetFileAttribute(opFile, attrib)
%case "Banner"
%return SLibDirectAccessGetFileContent(opFile, attrib)
%case "Includes"
%<FcnAppendMissingTokens(opFile,attrib)>
%assign includesContent = SLibDirectAccessGetFileContent(opFile, attrib)
%<FcnAddCoderTypesFilesToRequiredIncludes(opFile)>
%assign retValue = ""
%assign retValue = GET_FILE_ATTRIBUTE(opFile.Index, attrib)
%return retValue
%case "Defines"
%case "IntrinsicTypes"
%case "PrimitiveTypedefs"
%case "UserTop"
%case "Typedefs"
%case "GuardedIncludes"
%case "Enums"
%case "Definitions"
%case "ExternData"
%case "ExternFcns"
%case "FcnPrototypes"
%case "Declarations"
%case "Functions"
%case "CompilerErrors"
%case "CompilerWarnings"
%case "Documentation"
%case "UserBottom"
%case "ModelTypesIncludes"
%case "ModelTypesDefines"
%case "ModelTypesTypedefs"
%<FcnAppendMissingTokens(opFile,attrib)>
%assign content = GET_FILE_ATTRIBUTE(opFile.Index, attrib)
%if !WHITE_SPACE(content)
%return "/n" + content
%else
%return ""
%endif
%default
%assign errTxt = "Unknown file attribute: %<attrib>"
%<LibReportFatalError(errTxt)>
%endswitch
%endfunction
%function LibClearModelFileBuffers() void
%if ResetTLCGlobalsAfterUse
%assign success = CLEAR_FILE_BUFFERS()
%endif
%endfunction
%function LibWriteToStandardOutput(txt) void
%selectfile STDOUT
%if RTWVerbose
%<txt>
%endif
%closefile STDOUT
%endfunction
%function LibSetCodeTemplateComplianceLevel(level) void
%assign ::CompiledModel.ModelFiles.ComplianceLevel = level
%endfunction