Vuo  0.7.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
VuoCompilerNodeClass Class Reference

Description

The compiler detail class for VuoNodeClass.

Public Member Functions

VuoNodenewNode (string title="", double x=0, double y=0)
 Creates a substantial base node instance from this node class.
 
VuoNodenewNode (VuoNode *nodeToCopyMetadataFrom)
 Creates a substantial base node instance with its metadata copied from the existing nodeToCopyMetadataFrom.
 
string getClassIdentifier (void)
 The unique class name for this node class, rendered as an identifier in the generated code.
 
Function * getEventFunction (void)
 Returns an LLVM Function for this node class's implementation of the nodeEvent or nodeInstanceEvent function.
 
Function * getInitFunction (void)
 If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceInit function.
 
Function * getFiniFunction (void)
 If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceFini function.
 
Function * getCallbackStartFunction (void)
 If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceTriggerStart function.
 
Function * getCallbackUpdateFunction (void)
 If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceTriggerUpdate function.
 
Function * getCallbackStopFunction (void)
 If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceTriggerStop function.
 
VuoCompilerInstanceDataClassgetInstanceDataClass (void)
 If this node class is stateful, returns the instance data class.
 
string getDoxygenDocumentation (void)
 Returns a string containing documentation for this node class in Doxygen format.
 
string getDefaultSpecializedTypeName (string genericTypeName)
 If this node class is generic, returns the default specialized types to replace the generic type with when creating an instance.
 
- Public Member Functions inherited from VuoBaseDetail< VuoNodeClass >
 VuoBaseDetail (string description, VuoNodeClass *base)
 Creates a VuoNodeClass detail class.
 
VuoNodeClassgetBase (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.
 
- Public Member Functions inherited from VuoCompilerModule
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.
 
vector< string > getDependencies (void)
 Returns a list of this VuoCompilerModule's dependencies.
 
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.
 
VuoModulegetPseudoBase (void)
 Returns the (psuedo) base for this (psuedo) compiler detail class.
 

Static Public Member Functions

static VuoNodeClassnewNodeClass (string nodeClassName, Module *module)
 Creates a new substantial VuoNodeClass from the node class definition in the module.
 
static VuoNodeClassnewNodeClassWithoutImplementation (VuoNodeClass *baseNodeClass)
 Creates a new implementation-less compiler node class, using the given node class for its base VuoNodeClass.
 
- Static Public Member Functions inherited from VuoCompilerModule
static VuoCompilerModulenewModule (string moduleKey, Module *module)
 Instantiates a VuoCompilerModule (or child class) corresponding to the type of VuoCompilerModule defined in the LLVM module.
 
static Function * declareFunctionInModule (Module *module, Function *function)
 Copies the function's header into the LLVM module, if it's not already there.
 

Protected Member Functions

 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.
 
VuoPortClassgetInputPortClassWithName (string portName)
 Returns the input port class matching the specified portName, if one exists.
 
VuoPortClassgetOutputPortClassWithName (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.
 
virtual ~VuoCompilerModule ()
 Destructor.
 
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

static void parseGenericTypes (json_object *moduleDetails, map< string, string > &defaultSpecializedForGenericTypeName, map< string, set< string > > &compatibleSpecializedForGenericTypeName)
 Parses the "genericTypes" portion of a node class's metadata.
 
- Static Protected Member Functions inherited from VuoCompilerModule
static string parseString (json_object *o, string key)
 Parses the string value for key in the top level of the JSON object.
 
static int parseInt (json_object *o, string key)
 Parses the integer value for key in the top level of the JSON object.
 
static bool parseBool (json_object *o, string key)
 Parses the boolean value for key in the top level of the JSON object.
 
static vector< string > parseArrayOfStrings (json_object *o, string key)
 Parses the array-of-strings value for key in the top level of the JSON object.
 
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

map< string, string > defaultSpecializedForGenericTypeName
 If this node class is generic, use these specialized types when creating an instance.
 
- Protected Attributes inherited from VuoCompilerModule
struct json_object * moduleDetails
 This module's metadata, found in the argument to VuoModuleMetadata in the module definition.
 
vector< string > dependencies
 The dependencies found in this module's metadata.
 
Module * module
 The LLVM module that defines this node class or type.
 
VuoModulebase
 The (pseudo) base for this (pseudo) compiler detail class.
 
VuoCompilerBitcodeParserparser
 The parser of the LLVM module.
 

Friends

class TestVuoCompilerType
 
class TestVuoCompilerNodeClass
 

Constructor & Destructor Documentation

VuoCompilerNodeClass::VuoCompilerNodeClass ( string  className,
Module *  module 
)
protected

Creates a node class implementation from an LLVM module, and creates its corresponding base VuoNodeClass.

VuoCompilerNodeClass::VuoCompilerNodeClass ( VuoCompilerNodeClass compilerNodeClass)
protected

Creates a new compiler node class and creates a new base VuoNodeClass, both from compilerNodeClass.

VuoCompilerNodeClass::VuoCompilerNodeClass ( VuoNodeClass baseNodeClass)
protected

Creates a new implementation-less compiler node class, using the given node class for its base VuoNodeClass.

Member Function Documentation

Function * VuoCompilerNodeClass::getCallbackStartFunction ( void  )

If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceTriggerStart function.

Otherwise null.

Function * VuoCompilerNodeClass::getCallbackStopFunction ( void  )

If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceTriggerStop function.

Otherwise null.

Function * VuoCompilerNodeClass::getCallbackUpdateFunction ( void  )

If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceTriggerUpdate function.

Otherwise null.

string VuoCompilerNodeClass::getClassIdentifier ( void  )

The unique class name for this node class, rendered as an identifier in the generated code.

Possible characters: [A-Za-z0-9_]

Example:
vuo_math_lessThan_i64
string VuoCompilerNodeClass::getDefaultSpecializedTypeName ( string  genericTypeName)

If this node class is generic, returns the default specialized types to replace the generic type with when creating an instance.

string VuoCompilerNodeClass::getDoxygenDocumentation ( void  )

Returns a string containing documentation for this node class in Doxygen format.

Function * VuoCompilerNodeClass::getEventFunction ( void  )

Returns an LLVM Function for this node class's implementation of the nodeEvent or nodeInstanceEvent function.

Function * VuoCompilerNodeClass::getFiniFunction ( void  )

If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceFini function.

Otherwise null.

Function * VuoCompilerNodeClass::getInitFunction ( void  )

If this node class is stateful, returns an LLVM Function for this node class's implementation of the nodeInstanceInit function.

Otherwise null.

VuoPortClass * VuoCompilerNodeClass::getInputPortClassWithName ( string  portName)
protected

Returns the input port class matching the specified portName, if one exists.

Otherwise null.

VuoCompilerInstanceDataClass * VuoCompilerNodeClass::getInstanceDataClass ( void  )

If this node class is stateful, returns the instance data class.

Otherwise null.

VuoPortClass * VuoCompilerNodeClass::getOutputPortClassWithName ( string  portName)
protected

Returns the output port class matching the specified portName, if one exists.

Otherwise null.

VuoNode * VuoCompilerNodeClass::newNode ( string  title = "",
double  x = 0,
double  y = 0 
)

Creates a substantial base node instance from this node class.

VuoNode * VuoCompilerNodeClass::newNode ( VuoNode nodeToCopyMetadataFrom)

Creates a substantial base node instance with its metadata copied from the existing nodeToCopyMetadataFrom.

VuoNodeClass * VuoCompilerNodeClass::newNodeClass ( string  nodeClassName,
Module *  module 
)
static

Creates a new substantial VuoNodeClass from the node class definition in the module.

If the module does not contain a node class definition, returns NULL.

VuoNodeClass * VuoCompilerNodeClass::newNodeClassWithoutImplementation ( VuoNodeClass baseNodeClass)
static

Creates a new implementation-less compiler node class, using the given node class for its base VuoNodeClass.

void VuoCompilerNodeClass::parseGenericTypes ( json_object *  moduleDetails,
map< string, string > &  defaultSpecializedForGenericTypeName,
map< string, set< string > > &  compatibleSpecializedForGenericTypeName 
)
staticprotected

Parses the "genericTypes" portion of a node class's metadata.

See Also
VuoModuleMetadata

Member Data Documentation

map<string, string> VuoCompilerNodeClass::defaultSpecializedForGenericTypeName
protected

If this node class is generic, use these specialized types when creating an instance.


The documentation for this class was generated from the following files: