A node class used when generating code for a composition to handle data storage of and event flow through published input ports.
Definition at line 18 of file VuoCompilerPublishedInputNodeClass.hh.
Public Member Functions | |
size_t | getInputPortIndexForPublishedInputPort (size_t publishedInputPortIndex) |
Returns the index of the input port on this node class that corresponds to the published port. | |
size_t | getOutputPortIndexForPublishedInputPort (size_t publishedInputPortIndex) |
Returns the index of the output port on this node class that corresponds to the published port. | |
![]() | |
string | getFileName (void) |
Returns the file name (with extension) that this node class should have when saved to file — a mangled (shortened) file name so as not to exceed the operating system's limit on file name length. | |
![]() | |
bool | updateGenericNodeClass (std::function< VuoCompilerNodeClass *(const string &)> lookUpNodeClass) |
Attempts to update the stored reference to the generic node class from which this specialized node class is derived. | |
void | updateBackingNodeClass (VuoNode *nodeToBack, VuoCompiler *compiler) |
Updates the implementation for this VuoCompilerSpecializedNodeClass to be consistent with the backing types of nodeToBack, and updates the VuoCompilerNode of nodeToBack to be consistent with that implementation. | |
bool | isFullySpecialized (void) |
Returns true if this node class has no unspecialized generic types. | |
set< string > | getDependencies (void) |
If the backing node class exists, this function is performed on the backing node class instead of this node class. | |
string | getDependencyName (void) |
If the backing node class exists, this function is performed on the backing node class instead of this node class. | |
![]() | |
VuoNode * | newNode (string title="", double x=0, double y=0) |
Creates a substantial base node instance from this node class. | |
VuoNode * | newNode (VuoNode *nodeToCopyMetadataFrom) |
Creates a substantial base node instance with its metadata copied from the existing nodeToCopyMetadataFrom . | |
virtual | ~VuoCompilerNodeClass (void) |
Destructor. | |
bool | isLikelyImageFilter (void) |
Returns true if this node class is likely an image filter, based on its image-type input and output port counts. | |
bool | isLikelyImageGenerator (void) |
Returns true if this node class is likely an image generator, based on its image-type input and output port counts. | |
bool | isLikelyImageTransition (void) |
Returns true if this node class is likely an image transition, based on its image-type input and output port counts. | |
int | getImagePortCount (bool isInput) |
Returns the number of image-type input or output ports belonging to this node class. | |
bool | isSubcomposition (void) |
Returns true if this node class is a subcomposition (implemented in Vuo language, as opposed to text code). | |
bool | isIsf (void) |
Returns true if this node class is implemented in ISF text code. | |
set< pair< string, string > > | getContainedNodes (void) |
Returns the nodes (node identifier and node class name) contained within this subcomposition. | |
![]() | |
VuoBaseDetail (string description, VuoNodeClass *base) | |
Creates a detail class. | |
VuoNodeClass * | getBase (void) const |
Returns the detail class instance's base class instance. | |
void | setBase (VuoNodeClass *base) |
Sets the detail class instance's base class instance. | |
![]() | |
virtual | ~VuoCompilerModule (void) |
Destructor. | |
virtual string | getDependencyPath (void) |
Returns the path that would represent this VuoCompilerModule in a dependency file. | |
VuoCompilerCompatibility | getCompatibleTargets (void) |
Returns the set of targets (operating system versions) with which this module is compatible. | |
Module * | getModule (void) |
Returns this VuoCompilerModule's LLVM module, which other LLVM modules can link to. | |
VuoModule * | getPseudoBase (void) |
Returns the (pseudo) base for this (pseudo) compiler detail class. | |
bool | isBuiltIn (void) |
Returns true if this module is one of the built-in modules distributed with Vuo. | |
void | setBuiltIn (bool builtIn) |
Sets whether this module is one of the built-in modules distributed with Vuo. | |
string | getModulePath (void) |
Returns the file from which the LLVM module was loaded, or an empty string if the module was contained in an archive or generated by the compiler. | |
void | setSourcePath (const string &sourcePath) |
Stores the path of the source file for this module. | |
string | getSourcePath (void) |
Returns the stored path of the source file for this module, if any. | |
void | setSourceCode (const string &sourceCode) |
Stores the source code for this module. | |
string | getSourceCode (void) |
Returns the stored source code for this module, if any. | |
shared_ptr< VuoMakeDependencies > | getMakeDependencies (void) |
Returns the stored dependency file contents for this module, if any. | |
Static Public Member Functions | |
static VuoNodeClass * | newNodeClass (string nodeClassName, VuoCompiler *compiler, dispatch_queue_t llvmQueue) |
Returns a new node class with port names and types as specified by nodeClassName, or null if nodeClassName is not a valid published input node class name. | |
static VuoNodeClass * | newNodeClass (vector< VuoPublishedPort * > publishedInputPorts, dispatch_queue_t llvmQueue=nullptr) |
Returns a new node class with port names and types corresponding to publishedInputPorts. | |
static VuoNodeClass * | newNodeClass (string nodeClassName, Module *module) |
Creates a compiler and base node class from the node class implementation in the module, or returns null if the implementation is not of a published input node class. | |
static string | buildNodeClassName (const vector< VuoPublishedPort * > &publishedInputPorts) |
Creates a class name for a published input node with the given published input ports. | |
![]() | |
static bool | isPublishedNodeClassName (const string &nodeClassName) |
Returns true if the name has the format of a published input or output node class name. | |
static string | getFileNameForModuleKey (const string &moduleKey) |
Returns the file name (with extension) that a published input/output node class with the given module key would have when saved to file. | |
static bool | isModuleKeyMangledInFileName (const string &fileName) |
Returns true — a node class with the given file name (with extension) would have a module key other than the file name minus extension. | |
![]() | |
static bool | hasGenericPortTypes (VuoCompilerNodeClass *nodeClass) |
Returns true if the node class has at least one unspecialized generic type. | |
static string | parseGenericNodeClassName (string specializedNodeClassName, size_t genericTypeCount) |
Extracts the generic node class name from the specialized node class name by removing type names from the end. | |
static string | createSpecializedNodeClassName (string genericNodeClassName, vector< string > specializedTypeNames) |
Creates a specialized node class name by appending type names to the generic node class name. | |
static VuoNodeClass * | newNodeClass (const string &nodeClassName, VuoCompiler *compiler, dispatch_queue_t llvmQueue) |
Generates a specalized node class from a generic node class. | |
static VuoNodeClass * | newNodeClass (const string &nodeClassName, Module *module) |
Creates a compiler and base node class from the node class implementation in the module, or returns null if the implementation is not of a specialized node class. | |
static json_object * | buildSpecializedModuleDetails (const map< string, string > &specializedForGenericTypeName, const string &genericNodeClassName="") |
Constructs the value for the "specializedModule" key to be added to VuoModuleMetadata . | |
static VuoCompilerNodeClass * | getNodeClassForNode (VuoCompilerNodeClass *origNodeClass, VuoCompiler *compiler) |
Returns the node class to use for instantiating a node within a composition. | |
static bool | isSpecializationOfNodeClass (const string &potentialSpecializedNodeClassName, VuoCompilerNodeClass *potentialGenericNodeClass) |
Returns true if potentialSpecializedNodeClassName is one of the possible specializations of potentialGenericNodeClass. | |
![]() | |
static VuoNodeClass * | newNodeClass (string nodeClassName, Module *module) |
Creates a new substantial VuoNodeClass from the node class definition in the module. | |
static VuoNodeClass * | newNodeClassWithoutImplementation (VuoNodeClass *baseNodeClass) |
Creates a new implementation-less compiler node class, using the given node class for its base VuoNodeClass. | |
static string | getFileNameForModuleKey (const string &moduleKey) |
Returns the file name (with extension) that a node class with the given module key would have when saved to file. | |
static bool | isModuleKeyMangledInFileName (const string &fileName) |
Returns true if a node class with the given file name (with extension) would have a module key other than the file name minus extension. | |
![]() | |
static VuoCompilerModule * | newModule (const string &moduleKey, Module *module, const string &modulePath, const VuoCompilerCompatibility &moduleCompatibility) |
Instantiates a VuoCompilerModule (or child class) corresponding to the type of VuoCompilerModule defined in the LLVM module. | |
static VuoCompilerCompatibility | parseCompatibility (json_object *o, string key) |
Parses the target set value for key in the top level of the JSON object. | |
static void | parseGenericTypes (json_object *moduleDetails, vector< string > &genericTypeNames, map< string, string > &defaultSpecializedForGenericTypeName, map< string, vector< string > > &compatibleSpecializedForGenericTypeName) |
Parses the "genericTypes" portion of a module's metadata. | |
static Function * | declareFunctionInModule (Module *module, Function *function) |
Copies the function's header into the LLVM module, if it's not already there. | |
static string | getFileNameForModuleKey (const string &moduleKey) |
Returns the file name (with extension) that a module with the given module key would have when saved to file. | |
static bool | isModuleKeyMangledInFileName (const string &fileName) |
Returns true if a module with the given file name (with extension) would have a module key other than the file name minus extension. | |
Additional Inherited Members | |
![]() | |
VuoCompilerPublishedNodeClass (string nodeClassName, Module *module) | |
Creates a node class implementation from an LLVM module, and creates its corresponding base VuoNodeClass . | |
VuoCompilerPublishedNodeClass (VuoCompilerPublishedNodeClass *compilerNodeClass) | |
Creates a new compiler node class and a new base VuoNodeClass , both from compilerNodeClass . | |
VuoCompilerPublishedNodeClass (VuoNodeClass *baseNodeClass) | |
Creates a new implementation-less compiler node class, using the given node class for its base VuoNodeClass. | |
bool | parseNodeClassName (string nodeClassName, vector< string > &portNames, vector< string > &typeNames) VuoWarnUnusedResult |
If nodeClassName is a valid published input/output node class name, copies the port names and types from the node class name into portNames and typeNames and returns true. | |
string | buildNodeClassName (const vector< string > &portNames, const vector< VuoType * > &types) |
Creates a class name for a published input/output node with the given published input/output port names and types. | |
string | buildNodeClassName (const vector< string > &portNames, const vector< string > &typeNames) |
Creates a class name for a published input/output node with the given published input/output port names and type names. | |
string | buildNodeClassNameFromPorts (const vector< VuoPublishedPort * > &publishedPorts) |
Creates a class name for a published input/output node with the given published input/output ports. | |
vector< string > | formUniquePortNames (const vector< VuoPublishedPort * > &publishedPorts) |
Returns the list of input port names that a published input/output node would have corresponding to publishedPorts. | |
json_object * | buildSpecializedModuleDetails (const vector< VuoType * > &types) |
Constructs the value for the "specializedModule" key to be added to VuoModuleMetadata . | |
VuoCompilerNode * | createReplacementBackingNode (VuoNode *nodeToBack, string backingNodeClassName, VuoCompiler *compiler) |
Returns a fully specialized node of class backingNodeClassName that will replace the node class of nodeToBack. | |
VuoType * | getOriginalPortType (VuoPortClass *portClass) |
Returns this port's type in the (hypothetical) unspecialized published input node class. | |
string | getOriginalGenericNodeClassName (void) |
Returns the original node's class name (without any type suffixes). | |
string | getOriginalGenericNodeClassDescription (void) |
Returns the original node's class description (i.e., nothing). | |
VuoNodeSet * | getOriginalGenericNodeSet (void) |
Returns the original node's node set (i.e., none). | |
string | createUnspecializedNodeClassName (set< VuoPortClass * > portClassesToUnspecialize) |
Returns the name for the published input node class that would result if the given ports were changed back to their original types. | |
string | createSpecializedNodeClassNameWithReplacement (string genericTypeName, string specializedTypeName) |
Returns the name for the published input node class that would result if the given specialized type were substituted for the generic item type. | |
![]() | |
VuoCompilerSpecializedNodeClass (string nodeClassName, Module *module) | |
Creates a specialized node class implementation from an LLVM module, and creates its corresponding base VuoNodeClass . | |
VuoCompilerSpecializedNodeClass (VuoCompilerSpecializedNodeClass *compilerNodeClass) | |
Creates a new compiler node class and creates a new base VuoNodeClass , both from compilerNodeClass . | |
VuoCompilerSpecializedNodeClass (VuoNodeClass *baseNodeClass) | |
Creates a new implementation-less compiler node class, using the given node class for its base VuoNodeClass. | |
![]() | |
VuoCompilerNodeClass (string className, Module *module) | |
Creates a node class implementation from an LLVM module, and creates its corresponding base VuoNodeClass . | |
VuoCompilerNodeClass (VuoCompilerNodeClass *compilerNodeClass) | |
Creates a new compiler node class and creates a new base VuoNodeClass , both from compilerNodeClass. | |
VuoCompilerNodeClass (VuoNodeClass *baseNodeClass) | |
Creates a new implementation-less compiler node class, using the given node class for its base VuoNodeClass. | |
VuoPortClass * | getInputPortClassWithName (string portName) |
Returns the input port class matching the specified portName , if one exists. | |
VuoPortClass * | getOutputPortClassWithName (string portName) |
Returns the output port class matching the specified portName , if one exists. | |
![]() | |
VuoCompilerModule (VuoModule *base, Module *module) | |
Creates a VuoCompilerModule associated with the given LLVM module, as a pseudo compiler detail class of the given VuoModule. | |
string | nameForGlobal (string genericGlobalVarOrFuncName) |
Returns the mangled name for a function or global variable. | |
void | renameGlobalVarsAndFuncs (void) |
Renames the global variables and functions within the LLVM module so that they are unique to this VuoCompilerModule. | |
![]() | |
static VuoNodeClass * | newNodeClass (const string &nodeClassName, VuoCompiler *compiler, dispatch_queue_t llvmQueue, VuoCompilerPublishedNodeClass *singleton) |
Returns a new node class with port names and types as specified by nodeClassName, or null if nodeClassName is not a valid published input/output node class name. | |
static VuoNodeClass * | newNodeClass (const vector< VuoPublishedPort * > &publishedPorts, dispatch_queue_t llvmQueue, VuoCompilerPublishedNodeClass *singleton) |
Returns a new node class with port names and types corresponding to publishedPorts. | |
![]() | |
static VuoPortClass * | copyPortClassFromModel (VuoPortClass *modelPortClass, bool isInput) |
Creates a new port class (base + compiler detail) with properties copied from modelPortClass (base + compiler detail). | |
![]() | |
static bool | isSpecializedModule (Module *module, string moduleKey) |
Returns true if the moduleDetails global variable within the LLVM module contains a key indicating that it is intended to be a specialized module definition. | |
static string | nameForGlobal (string nameBeforeCompilation, string moduleKey) |
Returns the mangled name for a function or global variable. | |
static bool | hasOriginalOrMangledGlobal (string nameBeforeCompilation, Module *module, string moduleKey) |
Returns true if the module contains a function or global variable with name nameBeforeCompilation or with the corresponding mangled name. | |
![]() | |
map< string, string > | specializedForGenericTypeName |
The type name that replaces each generic type name in the original generic node class. | |
![]() | |
struct json_object * | moduleDetails |
This module's metadata, found in the argument to VuoModuleMetadata in the module definition. | |
set< string > | dependencies |
The modules and libraries needed to compile a composition containing this module. | |
VuoCompilerCompatibility | compatibleTargets |
The set of targets with which this module is compatible. | |
Module *VuoCompilerBitcodeParser * | parser |
< The LLVM module that defines this node class or type | |
string | sourcePath |
The file containing the module's source code, if known. | |
string | sourceCode |
The module's source code, if known. | |
shared_ptr< VuoMakeDependencies > | makeDependencies |
The source files needed to compile this module. | |
map< string, string > | defaultSpecializedForGenericTypeName |
For generic modules: the types to use when creating an unspecialized instance. | |
map< string, vector< string > > | compatibleSpecializedForGenericTypeName |
For generic modules: the types to which each generic type is allowed to be specialized. | |
|
static |
Creates a class name for a published input node with the given published input ports.
Definition at line 301 of file VuoCompilerPublishedInputNodeClass.cc.
size_t VuoCompilerPublishedInputNodeClass::getInputPortIndexForPublishedInputPort | ( | size_t | publishedInputPortIndex | ) |
Returns the index of the input port on this node class that corresponds to the published port.
Definition at line 285 of file VuoCompilerPublishedInputNodeClass.cc.
size_t VuoCompilerPublishedInputNodeClass::getOutputPortIndexForPublishedInputPort | ( | size_t | publishedInputPortIndex | ) |
Returns the index of the output port on this node class that corresponds to the published port.
Definition at line 293 of file VuoCompilerPublishedInputNodeClass.cc.
|
static |
Creates a compiler and base node class from the node class implementation in the module, or returns null if the implementation is not of a published input node class.
Definition at line 86 of file VuoCompilerPublishedInputNodeClass.cc.
|
static |
Returns a new node class with port names and types as specified by nodeClassName, or null if nodeClassName is not a valid published input node class name.
Definition at line 69 of file VuoCompilerPublishedInputNodeClass.cc.
|
static |
Returns a new node class with port names and types corresponding to publishedInputPorts.
Definition at line 77 of file VuoCompilerPublishedInputNodeClass.cc.