Xavax C++ Library Class Index   FAQ   Overview

Class xavax::MemberDescriptor

MemberDescriptor provides information about a data member of an object including the member name, member size, the basic type, and the offset within the object. If the member itself is a complex type, the member descriptor contains a pointer to a type descriptor or class record. Since member descriptors must have static initializers, this class has no constructors.

Method Summary
const char* name() const
         Returns the member name.
size_t offset() const
         Returns the member offset.
size_t size() const
         Returns the member size.
Type type() const
         Returns the basic type of the member.
const TypeDescriptor* typeDescriptor() const
         Return the type descriptor for this member.
const char* typeName() const
         Returns the basic type name of the member.

Macro Summary
CxArrayMember
         Define a member descriptor for an array member.
CxFunctionMember
         Define a member descriptor for a function member.
CxPointerMember
         Define a member descriptor for a pointer member.
CxSimpleMember
         Define a member descriptor for a simple member.

Related Classes
Class, Type, TypeDescriptor, TypeQualifier.

Method Detail

name

const char* name() const
Return the name of this member.
Returns:
the name of this member.

offset

size_t offset() const
Return the offset of this member from the address of the object.
Returns:
the offset of this member.

size

size_t size() const
Return the size of this member. If the member is an array, the size reported is the size of the array.
Returns:
the size of this member.

type

Type type() const
Return the basic type of the member (see Type). For example, if a member is defined as "char *cp[]", then the value tn::Char would be specified in the descriptor since the basic type of cp is char.
Returns:
the basic type of the member.

typeDescriptor

const TypeDescriptor*
typeDescriptor() const
If the member is not a basic type, return a pointer to a type descriptor or class record; otherwise, return null.
Returns:
the type descriptor for this member.

typeName

const char* typeName() const
Return the basic type name of the member.
Returns:
the basic type name of the member.

Macro Detail

CxArrayMember

CxArrayMember(T, type, member)
Defines a member descriptor for an array member.
Parameters:
T - the name of the type or class that contains the member.
type - the basic type of the member.
member - the member name.
Expands To:
{ tn::##type, tq::Array, sizeof(T::member), CxOffsetOf(T,member), _STR(member), 0 }

CxFunctionMember

CxFunctionMember(T, type, member)
Defines a member descriptor for a function member (i.e. pointer to function).
Parameters:
T - the name of the type or class that contains the member.
type - the basic type of the member.
member - the member name.
Expands To:
{ tn::##type, tq::Function, sizeof(T::member), CxOffsetOf(T,member), _STR(member), 0 }

CxPointerMember

CxPointerMember(T, type, member)
Defines a member descriptor for a pointer member.
Parameters:
T - the name of the type or class that contains the member.
type - the basic type of the member.
member - the member name.
Expands To:
{ tn::##type, tq::Pointer, sizeof(T::member), CxOffsetOf(T,member), _STR(member), 0 }

CxSimpleMember

CxSimpleMember(T, type, member)
Defines a member descriptor for a simple member.
Parameters:
T - the name of the type or class that contains the member.
type - the basic type of the member.
member - the member name.
Expands To:
{ tn::##type, tq::None, sizeof(T::member), CxOffsetOf(T,member), _STR(member), 0 }

Example Code

#include Object_h
//
// An example class with one simple member and
// two pointer members.
//
class Exception : public Object {
public:
  Exception(const char* filename, int line, const char* reason)
    : _filename(filename), _line(line), _reason(reason) {}
  // ...other methods...
private:
  int _line;
  const char* _filename;
  const char* _reason;
  CxStandardMethods(Exception);
}

//
// Metadata for the Exception class consisting of an
// array of member descriptors and a class record.
//
const MemberDescriptor Exception::_members[] = {
  CxSimpleMember(Exception,Int,_line),
  CxPointerMember(Exception,Char,_filename),
  CxPointerMember(Exception,Char,_reason)
};
CxDefineClass(Exception, Object, 0);


Copyright © 2003 Xavax Inc. -- All Rights Reserved