Vuo 2.4.4
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
VuoCompilerGenericType Class Reference

Description

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.
 
- Public Member Functions inherited from VuoCompilerType
Value * generateRetainedValueFromString (Module *module, BasicBlock *block, Value *stringValue)
 Generates code that unserializes data from a string.
 
Value * generateStringFromValueFunctionCall (Module *module, BasicBlock *block, Value *arg)
 Generates a call to [Type]_getString().
 
Value * generateInterprocessStringFromValueFunctionCall (Module *module, BasicBlock *block, Value *arg)
 Generates a call to [Type]_getInterprocessString().
 
Value * generateSummaryFromValueFunctionCall (Module *module, BasicBlock *block, Value *arg)
 Generates a call to [Type]_getSummary().
 
void generateRetainCall (Module *module, BasicBlock *block, Value *arg)
 Generates a call to [Type]_retain(), if needed.
 
void generateReleaseCall (Module *module, BasicBlock *block, Value *arg)
 Generates a call to [Type]_release(), if needed.
 
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.
 
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).
 
size_t getAllocationSize (Module *module)
 Returns the offset in bytes between successive objects of the type, including alignment padding.
 
size_t getStorageSize (Module *module)
 Returns the maximum number of bytes that may be overwritten by storing the type.
 
Value * convertToPortData (BasicBlock *block, Value *voidPointer)
 Casts a void * to a pointer to this type's storage.
 
vector< Type * > getFunctionParameterTypes (void)
 Returns the LLVM type(s) for when this Vuo type is passed to a function.
 
PointerType * getFunctionParameterPointerType (void)
 Returns the LLVM type for when a pointer to this Vuo type is passed to a function.
 
AttributeList getFunctionAttributes (void)
 Returns the LLVM attributes for this Vuo type when it appears as a function parameter.
 
void copyFunctionParameterAttributes (Function *dstFunction)
 Copies the LLVM attributes for this Vuo type as a function parameter onto the parameter(s) of dstFunction.
 
void copyFunctionParameterAttributes (Module *module, CallInst *dstCall)
 Copies the LLVM attributes for this Vuo type as a function parameter onto the parameter(s) of dstCall.
 
bool hasInterprocessStringFunction (void)
 Returns true if the type's getInterprocessString() function is defined.
 
bool supportsComparison (void)
 Returns true if the type's areEqual and isLessThan functions are defined.
 
- Public Member Functions inherited from VuoBaseDetail< VuoType >
 VuoBaseDetail (string description, VuoType *base)
 Creates a detail class.
 
VuoTypegetBase (void) const
 Returns the detail class instance's base class instance.
 
void setBase (VuoType *base)
 Sets the detail class instance's base class instance.
 
- Public Member Functions inherited from VuoCompilerModule
virtual ~VuoCompilerModule (void)
 Destructor.
 
virtual set< string > getDependencies (void)
 Returns a list of this VuoCompilerModule's dependencies.
 
virtual string getDependencyName (void)
 Returns the name that would represent this VuoCompilerModule in another VuoCompilerModule's list of dependencies.
 
virtual string getDependencyPath (void)
 Returns the path that would represent this VuoCompilerModule in a dependency file.
 
virtual string getFileName (void)
 Returns the file name (with extension) that this module should have when saved to 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.
 
VuoModulegetPseudoBase (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< VuoMakeDependenciesgetMakeDependencies (void)
 Returns the stored dependency file contents for this module, if any.
 

Static Public Member Functions

static VuoCompilerGenericTypenewGenericType (VuoGenericType *baseType, std::function< VuoCompilerType *(const string &)> lookUpType)
 Creates a VuoCompilerGenericType and makes it the compiler detail object for baseType.
 
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.
 
- Static Public Member Functions inherited from VuoCompilerType
static VuoCompilerTypenewType (string typeName, Module *module)
 Creates a type from the type definition in the module.
 
static bool isListType (VuoCompilerType *type)
 Returns true if the type is a list type.
 
- Static Public Member Functions inherited from VuoCompilerModule
static VuoCompilerModulenewModule (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 VuoCompilerType
 VuoCompilerType (string typeName, Module *module)
 Creates a type from an LLVM module, and creates its corresponding base VuoType.
 
- 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 void parseMetadata (void)
 Parses the metadata of this VuoCompilerModule (name, description, ...) from the LLVM module.
 
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 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 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 *VuoCompilerBitcodeParserparser
 < 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< VuoMakeDependenciesmakeDependencies
 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.
 

Member Function Documentation

◆ chooseBackingTypeName()

string VuoCompilerGenericType::chooseBackingTypeName ( string  genericTypeName,
vector< string >  compatibleTypeNames 
)
static

Returns the name of a non-generic type to use for compiling/linking a node class or composition with the given generic type.

Parameters
genericTypeNameThe generic type's name.
compatibleTypeNamesThe compatible specialized type names, as specified in a node class's "genericTypes" metadata. If this is non-empty, then the first item is chosen.
See also
VuoModuleMetadata

Definition at line 54 of file VuoCompilerGenericType.cc.

◆ getBackingTypeName()

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 64 of file VuoCompilerGenericType.cc.

◆ newGenericType()

VuoCompilerGenericType * VuoCompilerGenericType::newGenericType ( VuoGenericType baseType,
std::function< VuoCompilerType *(const string &)>  lookUpType 
)
static

Creates a VuoCompilerGenericType and makes it the compiler detail object for baseType.

Definition at line 21 of file VuoCompilerGenericType.cc.


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