Zen API
 All Classes Files Functions Variables Typedefs Friends Macros Modules Pages
kType Class Reference

Description

Represents metadata about a type (class, interface, or value).

When an assembly is constructed, one kType instance is created for every type defined in the assembly. kAssembly methods can be used to discover the types in the assembly, and kType methods can be used to learn about individual types (e.g., type name, base class).

The kObject_Type method can be used to obtain type information for any object derived from kObject. The kTypeOf macro can be used to obtain type information for any class, interface, or value by compile-time type symbol.

void DescribeObjectType(kObject object)
{
kType type = kObject_Type(object);
kType base = kType_Base(type);
printf("Type name: %s\n", kType_Name(type));
printf("Base type: %s\n", (base == 0) ? "(None)" : kType_Name(base));
printf("Type assembly: %s\n", kAssembly_Name(kType_Assembly(type)));
printf("Virtual method count: %u\n", (k32u) kType_VMethodCount(type));
printf("Extends kStream?: %s\n", kType_Extends(type, kTypeOf(kStream)) ? "Yes" : "No");
printf("Implements kCollection?: %s\n", kType_Implements(type, kTypeOf(kCollection)) ? "Yes" : "No");
}
Inheritance diagram for kType:
Inheritance graph

Public Member Functions

kAssembly kType_Assembly (kType type)
 Gets the assembly to which the type belongs. More...
 
kType kType_Base (kType type)
 Gets the base of a class or interface. More...
 
kSize kType_EnumeratorCount (kType type)
 Reports count of registered enumerators for the given enumeration type. More...
 
const kEnumeratorInfokType_EnumeratorInfoAt (kType type, kSize index)
 Gets metadata for the enumerator at the specified index. More...
 
kBool kType_Extends (kType type, kType baseType)
 Determines whether a type extends another type. More...
 
kSize kType_FieldCount (kType type)
 Reports count of registered fields for the given type. More...
 
const kFieldInfokType_FieldInfoAt (kType type, kSize index)
 Gets metadata for the field at the specified index. More...
 
kStatus kType_FindEnumeratorInfo (kType type, k32s value, const kEnumeratorInfo **info)
 Finds enumerator metadata for the enumerator with the specified value. More...
 
kStatus kType_FindMethodInfo (kType type, const kChar *name, const kMethodInfo **info)
 Finds metadata for the non-virtual method with the specified name. More...
 
kStatus kType_FormatEnumerator (kType type, k32s value, kChar *displayName, kSize capacity)
 Formats an enumerator value to a text buffer using the enumerator display name. More...
 
kSize kType_IMethodCount (kType type, kType interfaceType)
 Reports count of interface methods for the given interface. More...
 
const kMethodInfokType_IMethodInfoAt (kType type, kType interfaceType, kSize index)
 Gets metadata for the interface method at the specified index. More...
 
kBool kType_Implements (kType type, kType interfaceType)
 Determines whether a type implements a specific interface. More...
 
kSize kType_InnerSize (kType type)
 Gets the internal size of a type. More...
 
kType kType_InterfaceAt (kType type, kSize index)
 Gets the implemented interface at the specified index. More...
 
kSize kType_InterfaceCount (kType type)
 Reports count of implemented interfaces. More...
 
kBool kType_Is (kType type, kType other)
 Determines whether a type is equivalent to another type. More...
 
kBool kType_IsAbstract (kType type)
 Determines whether a type represents an abstract class. More...
 
kBool kType_IsArrayValue (kType type)
 Reports whether the type is an 'array-value' type (e.g., kText32) More...
 
kBool kType_IsBitEnum (kType type)
 Reports whether the type is an enumeration bitset. More...
 
kBool kType_IsClass (kType type)
 Determines whether a type represents a class. More...
 
kBool kType_IsEnum (kType type)
 Reports whether the type is an enumeration. More...
 
kBool kType_IsInterface (kType type)
 Determines whether a type represents an interface. More...
 
kBool kType_IsReference (kType type)
 Determines whether a type represents a class or interface. More...
 
kBool kType_IsValue (kType type)
 Determines whether a type represents a value (primitive, struct, enum). More...
 
kFunctionkType_IVTable (kType type, kType interfaceType)
 Gets a pointer to the type's virtual method table corresponding to the specified interface type. More...
 
kSize kType_MethodCount (kType type)
 Reports count of non-virtual methods. More...
 
const kMethodInfokType_MethodInfoAt (kType type, kSize index)
 Gets metadata for the non-virtual method at the specified index. More...
 
const kCharkType_Name (kType type)
 Gets the name of the type. More...
 
kStatus kType_ParseEnumerator (kType type, k32s *value, const kChar *displayName)
 Parses an enumerator value from a text buffer using the enumerator display name. More...
 
kSize kType_Size (kType type)
 Gets the external size of a type. More...
 
void * kType_Static (kType type)
 Gets a pointer to the type's static data structure. More...
 
kBool kType_StaticInitialized (kType type)
 Reports whether the type's static data structure has been successfully initialized. More...
 
kSize kType_StaticSize (kType type)
 Gets the size of a type's static data. More...
 
kSize kType_VersionCount (kType type)
 Reports count of registered serialization versions. More...
 
const kTypeVersionInfokType_VersionInfoAt (kType type, kSize index)
 Gets metadata for the serialization version at the specified index. More...
 
kSize kType_VMethodCount (kType type)
 Reports count of virtual methods. More...
 
const kMethodInfokType_VMethodInfoAt (kType type, kSize index)
 Gets metadata for the virtual method at the specified index. More...
 
kFunctionkType_VTable (kType type)
 Gets a pointer to the type's primary virtual method table. More...
 
- Public Member Functions inherited from kObject
kAlloc kObject_Alloc (kObject object)
 Gets the memory allocator associated with this object. More...
 
kStatus kObject_Clone (kObject *object, kObject source, kAlloc allocator)
 Constructs a new object by copying an existing object, including any aggregated child elements. More...
 
kStatus kObject_Destroy (kObject object)
 Destroys the object. More...
 
kStatus kObject_Dispose (kObject object)
 Destroys the object and any aggregated child elements. More...
 
kBool kObject_Equals (kObject object, kObject other)
 Determines whether the object is equal to another object. More...
 
kSize kObject_HashCode (kObject object)
 Gets a hash code representing the state of this object. More...
 
kBool kObject_Is (kObject object, kType type)
 Determines whether this object is an instance of the specified type. More...
 
kBool kObject_IsShared (kObject object)
 Reports whether the object is currently shared (reference count greater than one). More...
 
kStatus kObject_SetPool (kObject object, kObjectPool pool)
 Sets the object pool associated with this object. More...
 
kStatus kObject_Share (kObject object)
 Increments the reference count associated with this object. More...
 
kSize kObject_Size (kObject object)
 Estimates the memory consumed by this object, including any aggregated child elements. More...
 
kType kObject_Type (kObject object)
 Returns the type of the object. More...
 

Related

kPointer kTypeVersion
 Represents an opaque reference to type version information (used in object serialization).
 
#define kTypeName   kText64
 Alias for type used to store a kType text name.
 
#define kType_Assembly_(TYPE)   kxType_Assembly_(TYPE)
 Macro version of kType_Assembly.
 
#define kType_Is_(TYPE, OTHER)   kxType_Is_(TYPE, OTHER)
 Macro version of kType_Is.
 
#define kType_IsValue_(TYPE)   kxType_IsValue_(TYPE)
 Macro version of kType_IsValue.
 
#define kType_IsClass_(TYPE)   kxType_IsClass_(TYPE)
 Macro version of kType_IsClass.
 
#define kType_IsInterface_(TYPE)   kxType_IsInterface_(TYPE)
 Macro version of kType_IsInterface.
 
#define kType_IsAbstract_(TYPE)   kxType_IsAbstract_(TYPE)
 Macro version of kType_IsAbstract.
 
#define kType_IsReference_(TYPE)   kxType_IsReference_(TYPE)
 Macro version of kType_IsReference.
 
#define kType_IsEnum_(TYPE)   kxType_IsEnum_(TYPE)
 Macro version of kType_IsEnum.
 
#define kType_IsBitEnum_(TYPE)   kxType_IsBitEnum_(TYPE)
 Macro version of kType_IsBitEnum.
 
#define kType_IsArrayValue_(TYPE)   kxType_IsArrayValue_(TYPE)
 Macro version of kType_IsArrayValue.
 
#define kType_Implements_(TYPE, IFACE)   kxType_Implements_(TYPE, IFACE)
 Macro version of kType_Implements.
 
#define kType_Extends_(TYPE, BASE)   kxType_Extends_(TYPE, BASE)
 Macro version of kType_Extends.
 
#define kType_Base_(TYPE)   kxType_Base_(TYPE)
 Macro version of kType_Base.
 
#define kType_Size_(TYPE)   kxType_Size_(TYPE)
 Macro version of kType_Size.
 
#define kType_InnerSize_(TYPE)   kxType_InnerSize_(TYPE)
 Macro version of kType_InnerSize.
 
#define kType_VTable_(TYPE)   kxType_VTable_(TYPE)
 Macro version of kType_VTable.
 
#define kType_Static_(TYPE)   kxType_Static_(TYPE)
 Macro version of kType_Static.
 

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