A specialization of a generic node class.
When the compiler loads the node classes from the module folders, each generic node class (e.g. vuo.data.hold
) is represented by a VuoCompilerNodeClass (not VuoCompilerSpecializedNodeClass) instance.
When the compiler instantiates a specialization of a generic node class to add to a composition, it does this in one of two ways. If the node class is fully specialized (e.g. vuo.data.hold.VuoText
), then it looks up or creates the VuoCompilerSpecializedNodeClass with that implementation (e.g. vuo.data.hold.c
compiled with VuoText
in place of VuoGenericType1
). If the node class is not fully specialized (e.g. vuo.data.hold.VuoGenericType1
), then it creates a unique VuoCompilerSpecializedNodeClass for that node, and that VuoCompilerSpecializedNodeClass does not yet have an implementation.
When the compiler compiles a composition, each not-fully-specialized VuoCompilerSpecializedNodeClass (e.g. vuo.data.hold.VuoGenericType1
) is assigned an implementation, in the form of a "backing" node class (e.g. vuo.data.hold.VuoText
). The backing node class is a fully-specialized VuoCompilerSpecializedNodeClass that's effectively substituted in for the not-fully-specialized node class during the compiling of the composition.
If two nodes in a composition are of the same not-fully-specialized node class, then each node has its own unique VuoCompilerSpecializedNodeClass instance. These two VuoCompilerSpecializedNodeClass instances may have different backing node classes or the same backing node class, depending on what each node is connected to in the composition.
|
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.
|
|
virtual VuoType * | getOriginalPortType (VuoPortClass *portClass) |
| Returns this port's type in the generic node that this specialized node class was derived from.
|
|
virtual string | getOriginalGenericNodeClassName (void) |
| Returns the original node's class name (without any type suffixes).
|
|
virtual string | getOriginalGenericNodeClassDescription (void) |
| Returns the original node's description.
|
|
virtual VuoNodeSet * | getOriginalGenericNodeSet (void) |
| Returns the original node's node set.
|
|
virtual string | createUnspecializedNodeClassName (set< VuoPortClass * > portClassesToUnspecialize) |
| Returns the name for the node class that would result if the given port were changed back to its original type.
|
|
virtual string | createSpecializedNodeClassNameWithReplacement (string genericTypeName, string specializedTypeName) |
| Returns the name for the node class that would result if the given (innermost) specialized type were substituted for the given (innermost) generic type in 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 | isSubcomposition (void) |
| Returns true if this node class is a subcomposition (implemented in Vuo language, as opposed to text code).
|
|
| VuoBaseDetail (string description, VuoNodeClass *base) |
| Creates a VuoNodeClass detail class.
|
|
VuoNodeClass * | getBase (void) const |
| Returns the VuoNodeClass detail class instance's base class instance.
|
|
void | setBase (VuoNodeClass *base) |
| Sets the VuoNodeClass detail class instance's base class instance.
|
|
virtual | ~VuoCompilerModule (void) |
| Destructor.
|
|
VuoCompilerTargetSet | parseTargetSet (json_object *o, string key) |
| Parses the target set value for key in the top level of the JSON object.
|
|
VuoCompilerTargetSet::MacVersion | parseMacVersion (string version) |
| Parses a Mac OS version from a string.
|
|
VuoCompilerTargetSet | 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 (psuedo) base for this (psuedo) compiler detail class.
|
|
bool | getPremium (void) |
| Returns a boolean indicating whether this module contains premium content.
|
|
void | setPremium (bool premium) |
| Sets the boolean indicating whether this module contains premium content.
|
|
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.
|
|
|
| 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.
|
|