Class PtidyOSCodeGenerator
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.util.Attribute
-
- ptolemy.cg.kernel.generic.GenericCodeGenerator
-
- ptolemy.cg.kernel.generic.RunnableCodeGenerator
-
- ptolemy.cg.kernel.generic.program.ProgramCodeGenerator
-
- ptolemy.cg.kernel.generic.program.procedural.ProceduralCodeGenerator
-
- ptolemy.cg.kernel.generic.program.procedural.c.CCodeGenerator
-
- ptolemy.cg.kernel.generic.program.procedural.c.ptidyos.PtidyOSCodeGenerator
-
- All Implemented Interfaces:
java.lang.Cloneable
,Changeable
,Debuggable
,DebugListener
,Decorator
,Derivable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
public class PtidyOSCodeGenerator extends CCodeGenerator
Base class for PtidyOS code generator.- Since:
- Ptolemy II 10.0
- Version:
- $Id$
- Author:
- Jia Zou, Jeff C. Jensen
- Pt.AcceptedRating:
- red (jiazou)
- Pt.ProposedRating:
- red (jiazou)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.util.NamedObj
NamedObj.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
fileExtension
The index of the list of code files to generate code for.-
Fields inherited from class ptolemy.cg.kernel.generic.program.procedural.c.CCodeGenerator
generateCpp
-
Fields inherited from class ptolemy.cg.kernel.generic.program.procedural.ProceduralCodeGenerator
_compileCommandDefault, _includes, _libraries, compile, compileCommand, generateEmbeddedCode
-
Fields inherited from class ptolemy.cg.kernel.generic.program.ProgramCodeGenerator
_modifiedVariables, _newTypesUsed, _portTypeMap, _portTypeMap2, _portTypeMap3, _portTypeMaxIndex, _portTypeMaxIndex2, _portTypeMaxIndex3, _primitiveTypes, _runCommandDefault, _tokenFuncUsed, _typeFuncUsed, _variablesAsArrays, generateComment, inline, maximumLinesPerBlock, measureTime, sourceLineBinding, useMake, variablesAsArrays, verbosity
-
Fields inherited from class ptolemy.cg.kernel.generic.RunnableCodeGenerator
_substituteMap, run, runCommand
-
Fields inherited from class ptolemy.cg.kernel.generic.GenericCodeGenerator
_codeFileName, _eol, _executeCommands, _generateInSubdirectory, _model, _sanitizedModelName, codeDirectory, generateInSubdirectory, generatorPackage, generatorPackageList, INDENT1, INDENT2, INDENT3, overwriteFiles
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
-
-
Constructor Summary
Constructors Constructor Description PtidyOSCodeGenerator(NamedObj container, java.lang.String name)
Create a new instance of the PtidyOS code generator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
_generateAdditionalCodeFiles()
Generate code for the assembly file.protected java.lang.String
_generateIncludeFiles()
Generate include files.protected java.lang.String
_getOutputFilename()
Return the name of the output file.protected boolean
_isTopLevel()
Overwrite the base class, and use a method from the Ptides director to determine whether this is top level.int
generateCode(java.lang.StringBuffer code)
Generate code.java.lang.String
generateTypeConvertCode()
Generate type conversion code.-
Methods inherited from class ptolemy.cg.kernel.generic.program.procedural.c.CCodeGenerator
_addActorIncludeDirectories, _addActorLibraries, _analyzeTypeConversions, _finalPassOverCode, _generateAndWriteActorCode, _generateAndWriteCompositeActorCode, _generateBodyCode, _generateCode, _generateConstructorCode, _generateConstructorCode, _generateDeclareSharedCode, _generateIncludeFiles, _generatePortsAccessorsCode, _generatePortsAccessorsCode, _generatePortsAccessorsDeclaration, _generatePortsAccessorsDeclaration, _getFireFunctionArguments, _printExecutionTime, _recordStartTime, _templateParserClass, _writeMakefile, clone, generateClosingEntryCode, generateClosingExitCode, generateConstantDefinition, generateFireFunctionMethodName, generateFunctionTable, generateInitializeEntryCode, generateInitializeExitCode, generateInitializeProcedureName, generateLineInfo, generateMainEntryCode, generateMainExitCode, generatePostfireEntryCode, generatePostfireExitCode, generatePostfireProcedureName, generateTypeConvertCodeCandH, generateVariableDeclaration, generateVariableInitialization, generateWrapupEntryCode, generateWrapupExitCode, generateWrapupProcedureName, getModelName, invokeGenerateUpdatePortOffsets, markFunctionCalled, splitLongBody
-
Methods inherited from class ptolemy.cg.kernel.generic.program.procedural.ProceduralCodeGenerator
_concatenateElements, _executeCommands, _reset, addInclude, addLibrary, addLibraryIfNecessary
-
Methods inherited from class ptolemy.cg.kernel.generic.program.ProgramCodeGenerator
_addActorIncludeDirectories, _addActorLibraries, _codeDirectoryAsFile, _formatComment, _generatePreinitializeCode, _generatePreinitializeMethodBodyCode, _generatePreinitializeMethodEntryCode, _generatePreinitializeMethodExitCode, _generatePreinitializeMethodProcedureName, _generateSharedCode, _instantiateAdapter, _setupAdapter, _splitBody, _splitVariableDeclaration, _writeVariableDeclarations, addModifiedVariables, attributeChanged, codeGenType, comment, comment, containsCode, generateFireFunctionCode, generateFireFunctionCompositeEnd, generateFireFunctionCompositeStart, generateFireFunctionMethodInvocation, generateFireFunctionVariableAndMethodName, generateFireFunctionVariableDeclaration, generateInitializeCode, generatePackageStatement, generatePortName, generatePostfireCode, generatePtIOPortName, generatePtIOPortSize, generatePtTypedCompositeActorName, generatePtTypedCompositeActorSize, generateVariableName, generateWrapupCode, getModifiedVariables, getTemplateExtension, isPrimitive, isPrimitive, ptolemyType, setModifiedVariables, splitVariableDeclaration, targetType, updateCommandOptions
-
Methods inherited from class ptolemy.cg.kernel.generic.RunnableCodeGenerator
_runCommand, _setupCommands, _updateSubstituteMap
-
Methods inherited from class ptolemy.cg.kernel.generic.GenericCodeGenerator
_copyCFilesTosrc, _copyCFileTosrc, _getAdapter, _getAdapterClassFilter, _getAutoGeneratedAdapter, _printTimeAndMemory, _resetAll, _writeCode, _writeCodeFileName, createDecoratorAttributes, decoratedObjects, generateCode, generateCode, generateCopyright, getAdapter, getCodeFileName, getComponent, getExecuteCommands, getMethodExceptionString, getMethodVisibilityString, isGlobalDecorator, main, setCodeGenerator, setContainer, setExecuteCommands
-
Methods inherited from class ptolemy.kernel.util.Attribute
_checkContainer, _getContainedObject, _propagateExistence, getContainer, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, setName, updateContent
-
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _description, _executeChangeRequests, _exportMoMLContents, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, _validateSettables, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, attributeTypeChanged, clone, containedObjectsIterator, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getElementName, getFullName, getModelErrorHandler, getName, getName, getPrototypeList, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateExistence, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, uniqueName, validateSettables, workspace
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
-
-
-
Constructor Detail
-
PtidyOSCodeGenerator
public PtidyOSCodeGenerator(NamedObj container, java.lang.String name) throws IllegalActionException, NameDuplicationException
Create a new instance of the PtidyOS code generator.- Parameters:
container
- The container.name
- The name of the PtidyOS code generator.- Throws:
IllegalActionException
- If the super class throws the exception or error occurs when setting the file path.NameDuplicationException
- If the super class throws the exception or an error occurs when setting the file path.
-
-
Method Detail
-
generateCode
public int generateCode(java.lang.StringBuffer code) throws KernelException
Generate code. This is the main entry point. The generateCode() of the super method is called. After which code is generated for the assembly file.- Overrides:
generateCode
in classGenericCodeGenerator
- Parameters:
code
- The code buffer into which to generate the code.- Returns:
- The return value of the last subprocess that was executed. or -1 if no commands were executed.
- Throws:
KernelException
- If a type conflict occurs or the model is running.
-
generateTypeConvertCode
public java.lang.String generateTypeConvertCode() throws IllegalActionException
Description copied from class:ProgramCodeGenerator
Generate type conversion code.- Overrides:
generateTypeConvertCode
in classProgramCodeGenerator
- Returns:
- The type conversion code.
- Throws:
IllegalActionException
- If an error occurrs when generating the type conversion code, or if the adapter class for the model director cannot be found, or if an error occurs when the adapter actor generates the type conversion code.
-
_generateAdditionalCodeFiles
protected void _generateAdditionalCodeFiles() throws IllegalActionException
Generate code for the assembly file.- Throws:
IllegalActionException
- If getAdapter() throws it, or if the PtidyOSCodeGenerator is not used in a Ptides environment.
-
_getOutputFilename
protected java.lang.String _getOutputFilename() throws IllegalActionException
Return the name of the output file.- Overrides:
_getOutputFilename
in classGenericCodeGenerator
- Returns:
- The output file name.
- Throws:
IllegalActionException
- If there is problem resolving the string value of the generatorPackage parameter.
-
_generateIncludeFiles
protected java.lang.String _generateIncludeFiles() throws IllegalActionException
Description copied from class:ProgramCodeGenerator
Generate include files. This base class just returns an empty string.- Overrides:
_generateIncludeFiles
in classProgramCodeGenerator
- Returns:
- The include files.
- Throws:
IllegalActionException
- If the adapter class for some actor cannot be found.
-
_isTopLevel
protected boolean _isTopLevel() throws IllegalActionException
Overwrite the base class, and use a method from the Ptides director to determine whether this is top level. Test if the containing actor is in the top level.- Overrides:
_isTopLevel
in classGenericCodeGenerator
- Returns:
- true if the containing actor is in the top level.
- Throws:
IllegalActionException
- If the director is not a PtidesDirector.
-
-