A "Make List" node class.
Definition at line 19 of file VuoCompilerMakeListNodeClass.hh.
Public Member Functions | |
unsigned long | getItemCount (void) |
Returns the number of item input ports for this "Make List" node class. | |
VuoCompilerType * | getListType (void) |
Returns the type of the list output port for this "Make List" node class. | |
bool | updateListType (std::function< VuoCompilerType *(const string &)> lookUpType) |
Attempts to update the stored reference to the type of this node class's output port. | |
VuoType * | getOriginalPortType (VuoPortClass *portClass) |
Returns this port's type in the (hypothetical) unspecialized Make List 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. | |
VuoNodeSet * | getOriginalGenericNodeSet (void) |
Returns the original node's node set. | |
string | createUnspecializedNodeClassName (set< VuoPortClass * > portClassesToUnspecialize) |
Returns the name for the Make List node class that would result if the given port were changed back to its original type. | |
string | createSpecializedNodeClassNameWithReplacement (string genericTypeName, string specializedTypeName) |
Returns the name for the Make List node class that would result if the given specialized type were substituted for the generic item type. | |
Public Member Functions inherited from VuoCompilerSpecializedNodeClass | |
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. | |
virtual VuoCompilerNode * | createReplacementBackingNode (VuoNode *nodeToBack, string backingNodeClassName, VuoCompiler *compiler) |
Returns a fully specialized node of class backingNodeClassName that will replace the node class of nodeToBack. | |
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. | |
Public Member Functions inherited from VuoCompilerNodeClass | |
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. | |
virtual string | getFileName (void) |
Returns the file name (with extension) that this node class should have when saved to file. | |
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. | |
Public Member Functions inherited from VuoBaseDetail< VuoNodeClass > | |
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. | |
Public Member Functions inherited from VuoCompilerModule | |
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) |
Generates a node class for a "Make List" node. | |
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 Make List node class. | |
static bool | isMakeListNodeClassName (string nodeClassName) |
Returns true if the name has the format of a "Make List" node class name. | |
static string | getNodeClassName (unsigned long itemCount, VuoCompilerType *listType) |
Returns the name that a "Make List" node class would have if it were to input the given number of items and output the given type of list. | |
static bool | parseNodeClassName (string nodeClassName, unsigned long &itemCount, string &itemTypeName) |
Parses item count and type from the "Make List" node class name. | |
static string | buildNodeClassName (unsigned long itemCount, string itemTypeName) |
Creates a "Make List" node class name from the item count and type. | |
Static Public Member Functions inherited from VuoCompilerSpecializedNodeClass | |
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 Public Member Functions inherited from VuoCompilerNodeClass | |
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 Public Member Functions inherited from VuoCompilerModule | |
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 | |
Protected Member Functions inherited from VuoCompilerSpecializedNodeClass | |
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. | |
Protected Member Functions inherited from VuoCompilerNodeClass | |
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. | |
Protected Member Functions inherited from VuoCompilerModule | |
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 Protected Member Functions inherited from VuoCompilerSpecializedNodeClass | |
static VuoPortClass * | copyPortClassFromModel (VuoPortClass *modelPortClass, bool isInput) |
Creates a new port class (base + compiler detail) with properties copied from modelPortClass (base + compiler detail). | |
Static Protected Member Functions inherited from VuoCompilerModule | |
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. | |
Protected Attributes inherited from VuoCompilerSpecializedNodeClass | |
map< string, string > | specializedForGenericTypeName |
The type name that replaces each generic type name in the original generic node class. | |
Protected Attributes inherited from VuoCompilerModule | |
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 "Make List" node class name from the item count and type.
Definition at line 356 of file VuoCompilerMakeListNodeClass.cc.
|
virtual |
Returns the name for the Make List node class that would result if the given specialized type were substituted for the generic item type.
Reimplemented from VuoCompilerSpecializedNodeClass.
Definition at line 449 of file VuoCompilerMakeListNodeClass.cc.
|
virtual |
Returns the name for the Make List node class that would result if the given port were changed back to its original type.
Reimplemented from VuoCompilerSpecializedNodeClass.
Definition at line 432 of file VuoCompilerMakeListNodeClass.cc.
unsigned long VuoCompilerMakeListNodeClass::getItemCount | ( | void | ) |
Returns the number of item input ports for this "Make List" node class.
Definition at line 368 of file VuoCompilerMakeListNodeClass.cc.
VuoCompilerType * VuoCompilerMakeListNodeClass::getListType | ( | void | ) |
Returns the type of the list output port for this "Make List" node class.
Definition at line 376 of file VuoCompilerMakeListNodeClass.cc.
|
static |
Returns the name that a "Make List" node class would have if it were to input the given number of items and output the given type of list.
Definition at line 329 of file VuoCompilerMakeListNodeClass.cc.
|
virtual |
Returns the original node's class description.
Reimplemented from VuoCompilerSpecializedNodeClass.
Definition at line 415 of file VuoCompilerMakeListNodeClass.cc.
|
virtual |
Returns the original node's class name (without any type suffixes).
Reimplemented from VuoCompilerSpecializedNodeClass.
Definition at line 407 of file VuoCompilerMakeListNodeClass.cc.
|
virtual |
Returns the original node's node set.
Reimplemented from VuoCompilerSpecializedNodeClass.
Definition at line 423 of file VuoCompilerMakeListNodeClass.cc.
|
virtual |
Returns this port's type in the (hypothetical) unspecialized Make List node class.
Reimplemented from VuoCompilerSpecializedNodeClass.
Definition at line 395 of file VuoCompilerMakeListNodeClass.cc.
|
static |
Returns true if the name has the format of a "Make List" node class name.
(A "Make List" node class by that name may or may not exist.)
Definition at line 320 of file VuoCompilerMakeListNodeClass.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 Make List node class.
Definition at line 303 of file VuoCompilerMakeListNodeClass.cc.
|
static |
Generates a node class for a "Make List" node.
The node class's event function inputs zero or more items and outputs a list of those items.
nodeClassName | The name of the node class to generate. It should have the format "vuo.list.make.<item count>.<item type>" (e.g. "vuo.list.make.3.VuoInteger"). |
compiler | The compiler to use for looking up types. |
llvmQueue | Synchronizes access to LLVM's global context. |
Definition at line 81 of file VuoCompilerMakeListNodeClass.cc.
|
static |
Parses item count and type from the "Make List" node class name.
Definition at line 340 of file VuoCompilerMakeListNodeClass.cc.
bool VuoCompilerMakeListNodeClass::updateListType | ( | std::function< VuoCompilerType *(const string &)> | lookUpType | ) |
Attempts to update the stored reference to the type of this node class's output port.
Returns true if the type was actually found by lookUpNodeClass and the reference was updated.
Definition at line 386 of file VuoCompilerMakeListNodeClass.cc.