Represents the a property get/set (Of.property) operation.
Public Member Functions | |
PropertyOperation (CompiledMethod method, string name) | |
PropertyOperation (CompiledMethod method, CompiledFragment of, string name) | |
override bool | IsMemberAccessor () |
A value which states if this fragment accesses members (methods/fields) of something. More... | |
Type | OfType () |
Gets the type of the object that this is a property of. More... | |
MethodInfo | FindExtensionMethod (Type type, string alternative) |
Finds extension methods for this method and the given type. Their output to the 'Methods' set More... | |
override Type | OutputType (out CompiledFragment v) |
Returns the type that this fragment produces when it's executed. For example, int+int will output another int. More... | |
bool | Equals (PropertyOperation prop) |
Does this property operation equal the given one? Compares value names. More... | |
MethodInfo | GetOverload (CompiledFragment[] arguments) |
If this is a method, this attempts to find the correct overload by using the set of arguments given in the method call. More... | |
MethodInfo | GetOverload (Type[] paramTypes) |
If this is a method, this attempts to find the correct overload by using the set of arguments given in the method call. More... | |
bool | OutputTarget (NitroIL into) |
Outputs the location where the value must be set to. More... | |
void | OutputSet (NitroIL into, Type setting) |
Generates the instruction which performs the set. More... | |
override void | OutputIL (NitroIL into) |
Generates the IL of this operation into the given stream. More... | |
override string | ToString () |
Public Member Functions inherited from Nitro.Operation | |
Operation (CompiledMethod method) | |
Creates a new operation that is part of the given method. More... | |
override int | GetLineNumber () |
Gets the line number if there is one. More... | |
override bool | IsConstant () |
Checks if this fragment is a constant value. More... | |
bool | IsSet () |
Checks if this operation is part of a set operation. More... | |
Type | EnforceType (ref CompiledFragment input, Type inputType, Type newType) |
Forces this operation to be a particular type by creating a cast. More... | |
Type | Numerical (ref CompiledFragment input, Type inputType, Type defaultType) |
Forces this operation to have a numerical output. More... | |
Type | Numerical (Type typeA, Type typeB, string overloadMethod, ref CompiledFragment newOperation) |
Attempts to find the named numerical operation that the given types can perform. More... | |
Type | MapNumerical (Type typeA, Type typeB) |
Attempts to make both Input0 and Input1 numerical, returning the output result of an operation if they are. Usually the returned type will be the one with higher accuracy. E.g. adding an int to a long will result in a long. More... | |
Type | FindOverload (string methodName, Type typeA, Type typeB, ref CompiledFragment newOperation) |
Looks for an overloaded numerical operator by the given name (e.g. "Addition"). The name will then have op_ appended to the start of it (as used internally by .NET). If found, the output type of the operation is returned. More... | |
Public Member Functions inherited from Nitro.CompiledFragment | |
CompiledFragment () | |
An empty constructor used for inheriting this class. More... | |
object | ActiveValue () |
Gets the active value of this fragment. More... | |
CompiledFragment (object value) | |
Creates a new compiled fragment for the given constant value. More... | |
bool | IsLogical () |
Checks if this fragment can be used logically. More... | |
Type | OutputType () |
Returns the type that this fragment produces when it's executed. For example, int+int will output another int. This must only be used when it's known that a fragment won't replace itself. More... | |
override CompiledFragment | Compile (CompiledMethod method) |
Compiles this CodeFragment into a CompiledFragment. More... | |
void | EmitValue (Type type, NitroIL into) |
Emits the Value held by this compiled fragment if possible. More... | |
Public Member Functions inherited from Nitro.CodeFragment | |
void | Error (string message) |
Throws an error, outputting the line number it occured on. More... | |
void | AddToStart (CodeFragment parent) |
Adds this code fragment to the beginning of the given parents child set. More... | |
void | AddBefore (CodeFragment frag) |
Adds this code fragment as a child before the given one. More... | |
void | AddAfter (CodeFragment frag) |
Adds this code fragment as a child after the given one. More... | |
void | Remove () |
Removes this fragment from its parent. More... | |
void | AddChild (CodeFragment child) |
Adds the given fragment as a child of this one. More... | |
virtual bool | Typeable () |
Defines if a fragment can be given a :TYPE. E.g. Brackets (for casting, (A):TYPE) and variables can. More... | |
int | ChildCount () |
How many children does this fragment have? More... | |
virtual AddResult | AddTo (CodeFragment to, CodeLexer sr) |
Adds this fragment as a child to the given fragment. It may be overriden by some types of fragment as they may wish to handle it differently. More... | |
override string | ToString () |
Converts this fragment into a code string. More... | |
Public Attributes | |
string | Name |
The name of the property. Always lowercase. More... | |
bool | IsStatic |
True if this property is a static one. More... | |
FieldInfo | Field |
If this is a field, the FieldInfo that represents it. More... | |
CompiledFragment | Of |
The fragment/object this is a property of. "Of.property". More... | |
PropertyInfo | Property |
If this is a property, the PropertyInfo that represents it. More... | |
Type | MethodReturnType |
If this is a method, the type it returns. More... | |
List< MethodInfo > | Methods |
If this is an extension method, the overloaded set of methods. More... | |
Public Attributes inherited from Nitro.Operation | |
int | LineNumber =-1 |
The line number this operation originates from. More... | |
CompiledMethod | Method |
The method that this operation belongs to. More... | |
CompiledFragment | Input0 |
The first input to this operation. Often the input to the left of an operator. Input0+Input1. More... | |
CompiledFragment | Input1 |
The second input to this operation. Often the input to the right of an operator. Input0+Input1. More... | |
Public Attributes inherited from Nitro.CompiledFragment | |
object | Value |
A constant value if this fragment has one. E.g. strings, ints etc. go here. More... | |
Public Attributes inherited from Nitro.CodeFragment | |
TypeFragment | GivenType |
A type (:TYPE) which was explicitly given to this block. More... | |
CodeFragment | NextChild |
The child after this one. More... | |
CodeFragment | LastChild |
The last child of this fragment, stored as a linked list. More... | |
CodeFragment | FirstChild |
The first child of this fragment, stored as a linked list. More... | |
CodeFragment | PreviousChild |
The child before this one. More... | |
CodeFragment | ParentFragment |
The parent fragment of this, if any. More... | |
Properties | |
override bool | EmitsAddress [get] |
Properties inherited from Nitro.Operation | |
virtual bool | RequiresStoring [get] |
This operation requires you "storing" its output. A variable does; for(){} does not. More... | |
Properties inherited from Nitro.CompiledFragment | |
virtual bool | EmitsAddress [get] |
Does this fragment emit an address? More... | |
Properties inherited from Nitro.CodeFragment | |
bool | IsParent [get] |
Is this fragment a parent or not? More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from Nitro.CodeFragment | |
static int | IsOfType (char[] arrayToSearch, char charToFind) |
Returns the index in the given array of the given character if it's found in it. More... | |
|
inline |
|
inline |
|
inline |
Does this property operation equal the given one? Compares value names.
|
inline |
Finds extension methods for this method and the given type. Their output to the 'Methods' set
|
inline |
If this is a method, this attempts to find the correct overload by using the set of arguments given in the method call.
arguments | The set of arguments given in the method call. |
|
inline |
If this is a method, this attempts to find the correct overload by using the set of arguments given in the method call.
arguments | The set of arguments given in the method call. |
|
inlinevirtual |
A value which states if this fragment accesses members (methods/fields) of something.
Reimplemented from Nitro.CodeFragment.
|
inline |
Gets the type of the object that this is a property of.
|
inlinevirtual |
Generates the IL of this operation into the given stream.
into | The IL stream to output the IL into |
Reimplemented from Nitro.CompiledFragment.
Generates the instruction which performs the set.
Implements Nitro.ISettable.
|
inline |
Outputs the location where the value must be set to.
Implements Nitro.ISettable.
|
inlinevirtual |
Returns the type that this fragment produces when it's executed. For example, int+int will output another int.
v | In some cases, checking the output type will generate a new fragment. This value is the new fragment and it must always replace the original fragment that OutputType was called on. |
Reimplemented from Nitro.CompiledFragment.
|
inline |
FieldInfo Nitro.PropertyOperation.Field |
If this is a field, the FieldInfo that represents it.
bool Nitro.PropertyOperation.IsStatic |
True if this property is a static one.
Type Nitro.PropertyOperation.MethodReturnType |
If this is a method, the type it returns.
List<MethodInfo> Nitro.PropertyOperation.Methods |
If this is an extension method, the overloaded set of methods.
string Nitro.PropertyOperation.Name |
The name of the property. Always lowercase.
CompiledFragment Nitro.PropertyOperation.Of |
The fragment/object this is a property of. "Of.property".
PropertyInfo Nitro.PropertyOperation.Property |
If this is a property, the PropertyInfo that represents it.
|
get |