blob: cac2319b50b202328cca1d563c511fc96cef74fa (
plain) (
tree)
|
|
/*
* System.Reflection-like API for access to .NET assemblies (DLL & EXE)
*/
package ch.epfl.lamp.compiler.msil;
/**
* Specifies flags that control binding and the way in which
* the search for members and types is conducted by reflection.
*
* Note: You must specify Instance or Static along with Public or NonPublic
* or no members will be returned.
*
* @author Nikolay Mihaylov
* @version 1.0
*/
public abstract class BindingFlags {
//##########################################################################
// disallows extending the class;
private BindingFlags() {}
/**
* Specifies no binding flag.
*/
public static final int Default = 0x0000;
/**
* Specifies that the case of the member name should not be considered
* when binding.
*/
public static final int IgnoreCase = 0x0001;
/**
* Specifies that only members declared at the level of the supplied type's
* hierarchy should be considered. Inherited members are not considered.
*/
public static final int DeclaredOnly = 0x0002;
/**
* Specifies that instance members are to be included in the search.
*/
public static final int Instance = 0x0004;
/**
* Specifies that static members are to be included in the search.
*/
public static final int Static = 0x0008;
/**
* Specifies that public members are to be included in the search.
*/
public static final int Public = 0x0010;
/**
* Specifies that non-public members are to be included in the search.
*/
public static final int NonPublic = 0x0020;
/**
* Specifies that static members up the hierarchy should be returned.
* Static members include fields, methods, events, and properties.
* Nested types are not returned.
*/
public static final int FlattenHierarchy = 0x0040;
/**
* Specifies that a method is to be invoked. This may not be a constructor
* or a type initializer.
*/
public static final int InvokeMethod = 0x0100;
/**
* Specifies that Reflection should create an instance of
* the specified type. Calls the constructor that matches
* the given arguments. The supplied member name is ignored.
* If the type of lookup is not specified, (Instance | Public)
* will apply. It is not possible to call a type initializer.
*/
public static final int CreateInstance = 0x0200;
/**
* Specifies that the value of the specified field should be returned.
*/
public static final int GetField = 0x0400;
/**
* Specifies that the value of the specified field should be set.
*/
public static final int SetField = 0x0800;
/**
* Specifies that the value of the specified property should be returned.
*/
public static final int GetProperty = 0x1000;
/**
* Specifies that the value of the specified property should be set.
* For COM properties, specifying this binding flag is equivalent to
* specifying PutDispProperty and PutRefDispProperty.
*/
public static final int SetProperty = 0x2000;
/**
* Specifies that the PROPPUT member on a COM object should be invoked.
* PROPPUT specifies a property-setting function that uses a value.
* Use PutDispProperty if a property has both PROPPUT and PROPPUTREF
* and you need to distinguish which one is called.
*/
public static final int PutDispProperty = 0x4000;
/**
* Specifies that the PROPPUTREF member on a COM object should be invoked.
* PROPPUTREF specifies a property-setting function that uses a reference
* instead of a value. Use PutRefDispProperty if a property has both
* PROPPUT and PROPPUTREF and you need to distinguish which one is called.
*/
public static final int PutRefDispProperty = 0x8000;
/**
* Specifies that types of the supplied arguments must exactly match
* the types of the corresponding formal parameters. Reflection
* throws an exception if the caller supplies a non-null Binder object,
* since that implies that the caller is supplying BindToXXX
* implementations that will pick the appropriate method.
* Reflection models the accessibility rules of the common type system.
* For example, if the caller is in the same assembly, the caller
* does not need special permissions for internal members. Otherwise,
* the caller needs ReflectionPermission. This is consistent with
* lookup of members that are protected, private, and so on.
* The general principle is that ChangeType should perform only
* widening coercions, which never lose data. An example of a
* widening coercion is coercing a value that is a 32-bit signed integer
* to a value that is a 64-bit signed integer. This is distinguished
* from a narrowing coercion, which may lose data. An example of
* a narrowing coercion is coercing a 64-bit signed integer to
* a 32-bit signed integer.
* The default binder ignores this flag, while custom binders can
* implement the semantics of this flag.
*/
public static final int ExactBinding = 0x10000;
/**
* Used in COM interop to specify that the return value of the member
* can be ignored.
*/
public static final int IgnoreReturn = 0x100000 ;
/**
* Returns the set of members whose parameter count matches the number
* of supplied arguments. This binding flag is used for methods with
* parameters that have default values and methods with variable arguments
* (varargs). This flag should only be used with Type.InvokeMember.
* Parameters with default values are used only in calls where trailing
* arguments are omitted. They must be the last arguments.
*/
public static final int OptionalParamBinding = 0x40000;
/**
* Not implemented.
*/
public static final int SuppressChangeType = 0x20000;
//##########################################################################
} // class BindingFlags
|