The compiler detail class for VuoGenericType.
This class associates a generic type with a "backing type" — a non-generic type to be substituted in for the generic type when compiling/linking a node class or composition.
Definition at line 22 of file VuoCompilerGenericType.hh.
Public Member Functions | |
string | getBackingTypeName (void) |
Returns the non-generic type to use for compiling/linking a node class or composition with this generic type. More... | |
Public Member Functions inherited from VuoCompilerType | |
Value * | generateValueFromStringFunctionCall (Module *module, BasicBlock *block, Value *arg) |
Generates a call to [Type]_makeFromString(). More... | |
Value * | generateStringFromValueFunctionCall (Module *module, BasicBlock *block, Value *arg) |
Generates a call to [Type]_getString(). More... | |
Value * | generateInterprocessStringFromValueFunctionCall (Module *module, BasicBlock *block, Value *arg) |
Generates a call to [Type]_getInterprocessString(). More... | |
Value * | generateSummaryFromValueFunctionCall (Module *module, BasicBlock *block, Value *arg) |
Generates a call to [Type]_getSummary(). More... | |
void | generateRetainCall (Module *module, BasicBlock *block, Value *arg) |
Generates a call to [Type]_retain(), if needed. More... | |
void | generateReleaseCall (Module *module, BasicBlock *block, Value *arg) |
Generates a call to [Type]_release(), if needed. More... | |
vector< Value * > | convertPortDataToArgs (Module *module, BasicBlock *block, Value *arg, FunctionType *functionType, int parameterIndex, bool isUnloweredStructPointerParameter) |
Generates an argument or arguments representing the port data, lowered for the C ABI. More... | |
Value * | convertArgsToPortData (Module *module, BasicBlock *block, Function *function, int parameterIndex) |
Unlowers the function argument at parameterIndex (and the one after, if this data type is lowered to 2 arguments) into port data (the same data type as portContext->data ). More... | |
size_t | getSize (Module *module) |
Returns this type's storage size in bytes. More... | |
Value * | convertToPortData (BasicBlock *block, Value *voidPointer) |
Casts a void * to a pointer to this type's storage. More... | |
bool | isRetainOrReleaseNeeded () |
Returns true if this type is itself reference-counted, or may have structure members that are reference-counted. More... | |
vector< Type * > | getFunctionParameterTypes (void) |
Returns the LLVM type(s) for when this Vuo type is passed to a function. More... | |
PointerType * | getFunctionParameterPointerType (void) |
Returns the LLVM type for when a pointer to this Vuo type is passed to a function. More... | |
AttributeList | getFunctionAttributes (void) |
Returns the LLVM attributes for this Vuo type when it appears as a function parameter. More... | |
void | copyFunctionParameterAttributes (Function *dstFunction) |
Copies the LLVM attributes for this Vuo type as a function parameter onto the parameter(s) of dstFunction. More... | |
void | copyFunctionParameterAttributes (Module *module, CallInst *dstCall) |
Copies the LLVM attributes for this Vuo type as a function parameter onto the parameter(s) of dstCall. More... | |
bool | hasInterprocessStringFunction (void) |
Returns true if the type's getInterprocessString() function is defined. More... | |
bool | supportsComparison (void) |
Returns true if the type's areEqual and isLessThan functions are defined. More... | |
Public Member Functions inherited from VuoBaseDetail< VuoType > | |
VuoBaseDetail (string description, VuoType *base) | |
Creates a detail class. More... | |
VuoType * | getBase (void) const |
Returns the detail class instance's base class instance. More... | |
void | setBase (VuoType *base) |
Sets the detail class instance's base class instance. More... | |
Public Member Functions inherited from VuoCompilerModule | |
virtual | ~VuoCompilerModule (void) |
Destructor. More... | |
VuoCompilerCompatibility | parseCompatibility (json_object *o, string key) |
Parses the target set value for key in the top level of the JSON object. More... | |
virtual set< string > | getDependencies (void) |
Returns a list of this VuoCompilerModule's dependencies. More... | |
virtual string | getDependencyName (void) |
Returns the name that would represent this VuoCompilerModule in another VuoCompilerModule's list of dependencies. More... | |
VuoCompilerCompatibility | getCompatibleTargets (void) |
Returns the set of targets (operating system versions) with which this module is compatible. More... | |
Module * | getModule (void) |
Returns this VuoCompilerModule's LLVM module, which other LLVM modules can link to. More... | |
VuoModule * | getPseudoBase (void) |
Returns the (pseudo) base for this (pseudo) compiler detail class. More... | |
bool | isBuiltIn (void) |
Returns true if this module is one of the built-in modules distributed with Vuo. More... | |
void | setBuiltIn (bool builtIn) |
Sets whether this module is one of the built-in modules distributed with Vuo. More... | |
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. More... | |
Static Public Member Functions | |
static VuoCompilerGenericType * | newGenericType (VuoGenericType *baseType, VuoCompilerType *(^getType)(string moduleKey)) |
Creates a VuoCompilerGenericType and makes it the compiler detail object for baseType. More... | |
static VuoCompilerGenericType * | newGenericType (VuoGenericType *baseType, const map< string, VuoCompilerType * > &types) |
Creates a VuoCompilerGenericType and makes it the compiler detail object for baseType. More... | |
static string | chooseBackingTypeName (string genericTypeName, vector< string > compatibleTypeNames) |
Returns the name of a non-generic type to use for compiling/linking a node class or composition with the given generic type. More... | |
Static Public Member Functions inherited from VuoCompilerType | |
static VuoCompilerType * | newType (string typeName, Module *module) |
Creates a type from the type definition in the module. More... | |
static bool | isListType (VuoCompilerType *type) |
Returns true if the type is a list type. More... | |
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. More... | |
static Function * | declareFunctionInModule (Module *module, Function *function) |
Copies the function's header into the LLVM module, if it's not already there. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from VuoCompilerType | |
VuoCompilerType (string typeName, Module *module) | |
Creates a type from an LLVM module, and creates its corresponding base VuoType . More... | |
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. More... | |
virtual void | parseMetadata (void) |
Parses the metadata of this VuoCompilerModule (name, description, ...) from the LLVM module. More... | |
string | nameForGlobal (string genericGlobalVarOrFuncName) |
Returns the mangled name for a function or global variable. More... | |
void | renameGlobalVarsAndFuncs (void) |
Renames the global variables and functions within the LLVM module so that they are unique to this VuoCompilerModule. More... | |
Static Protected Member Functions inherited from VuoCompilerModule | |
static string | nameForGlobal (string nameBeforeCompilation, string moduleKey) |
Returns the mangled name for a function or global variable. More... | |
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. More... | |
Protected Attributes inherited from VuoCompilerModule | |
struct json_object * | moduleDetails |
This module's metadata, found in the argument to VuoModuleMetadata in the module definition. More... | |
set< string > | dependencies |
The dependencies found in this module's metadata. More... | |
VuoCompilerCompatibility | compatibleTargets |
The set of targets with which this module is compatible. More... | |
Module * | module |
The LLVM module that defines this node class or type. More... | |
VuoCompilerBitcodeParser * | parser |
The parser of the LLVM module. More... | |
|
static |
Returns the name of a non-generic type to use for compiling/linking a node class or composition with the given generic type.
genericTypeName | The generic type's name. |
compatibleTypeNames | The compatible specialized type names, as specified in a node class's "genericTypes" metadata. If this is non-empty, then the first item is chosen. |
Definition at line 67 of file VuoCompilerGenericType.cc.
string VuoCompilerGenericType::getBackingTypeName | ( | void | ) |
Returns the non-generic type to use for compiling/linking a node class or composition with this generic type.
Definition at line 77 of file VuoCompilerGenericType.cc.
|
static |
Creates a VuoCompilerGenericType and makes it the compiler detail object for baseType.
Definition at line 37 of file VuoCompilerGenericType.cc.
|
static |
Creates a VuoCompilerGenericType and makes it the compiler detail object for baseType.
Definition at line 21 of file VuoCompilerGenericType.cc.