+-----------------+ | layout: page | +-----------------+ | title: Values | +-----------------+ `llvm.core.Value `_ is the base class of all values computed by a program that may be used as operands to other values. A value has a type associated with it (an object of `llvm.core.Type `_). The class hierarchy is: :: Value User Constant ConstantExpr ConstantAggregateZero ConstantInt ConstantFP ConstantArray ConstantStruct ConstantVector ConstantPointerNull UndefValue GlobalValue GlobalVariable Function Instruction CallOrInvokeInstruction PHINode SwitchInstruction CompareInstruction Argument BasicBlock The `Value `_ class is abstract, it's not meant to be instantiated. `User `_ is a `Value `_ that in turn uses (i.e., can refer to) other values (for e.g., a constant expression 1+2 refers to two constant values 1 and 2). `Constant `_-s represent constants that appear within code or as initializers of globals. They are constructed using static methods of `Constant `_. Various types of constants are represented by various subclasses of `Constant `_. However, most of them are empty and do not provide any additional attributes or methods over `Constant `_. The `Function `_ object represents an instance of a function type. Such objects contain `Argument `_ objects, which represent the actual, local-variable-like arguments of the function (not to be confused with the arguments returned by a function *type* object -- these represent the *type* of the arguments). The various `Instruction `_-s are created by the `Builder `_ class. Most instructions are represented by `Instruction `_ itself, but there are a few subclasses that represent interesting instructions. `Value `_ objects have a type (read-only), and a name (read-write). **Related Links** `functions `_, `comparision `_, `llvm.core.Value `_, `llvm.core.User `_, `llvm.core.Constant `_, `llvm.core.GlobalValue `_, `llvm.core.GlobalVariable `_, `llvm.core.Argument `_, `llvm.core.Instruction `_, `llvm.core.Builder `_, `llvm.core.BasicBlock `_