Main Page   Class Hierarchy   Compound List   File List   Compound Members  

class.h

00001 #ifndef __CLASS_H__
00002 #define __CLASS_H__
00003 
00004 #include <stddef.h>
00005 #include <stdio.h>
00006 
00007 #include "type.h"
00008 
00009 
00013 enum RTTIClassFlags { 
00014     RTTI_CLS_ABSTRACT  = 0x0001,
00015     RTTI_CLS_INTERNAL  = 0x0002,
00016     RTTI_CLS_TRANSIENT = 0x0004
00017 };
00018     
00019 
00023 class RTTI_DLL_ENTRY RTTIClassDescriptor : public RTTIType { 
00024   public:
00025     typedef RTTIFieldDescriptor* (*RTTIDescribeFieldsFunc)();
00026     typedef RTTIMethodDescriptor* (*RTTIDescribeMethodsFunc)();
00027     typedef void  (*RTTIDefaultConstructor)(void* ptr);
00028     typedef void* (*RTTICreateInstanceFunc)();
00029 
00034     void getTypeName(char* buf);
00035 
00042     RTTIClassDescriptor* getNext() { 
00043         return next;
00044     }
00045 
00050     RTTIFieldDescriptor** getFields() { 
00051         return fields;
00052     }
00053 
00058     int getNumberOfFields() { 
00059         return nFields;
00060     }
00061 
00066     char const* getName() { 
00067         return name;
00068     }
00069     
00074     int  getSize() { 
00075         return size;
00076     }
00077 
00082     int  getFlags() { 
00083         return flags;
00084     }
00085 
00090     void* newInstance();
00091 
00096     RTTIClassDescriptor** getBaseClasses() { 
00097         return baseClasses;
00098     }
00099 
00104     int getNumberOfBaseClasses() { 
00105         return nBaseClasses;
00106     }
00107 
00112     RTTIMethodDescriptor** getMethods() { 
00113         return methods;
00114     }
00115 
00120     int getNumberOfMethods() { 
00121         return nMethods;
00122     }
00123 
00129     RTTIFieldDescriptor*  findField(char const* name);
00130 
00158     RTTIMethodDescriptor* findMethod(char const* name);
00159 
00160 
00173     RTTIClassDescriptor(char const* name, int size, 
00174                         RTTIDescribeFieldsFunc  describeFieldsFunc,
00175                         RTTIDescribeMethodsFunc describeMethodsFunc, 
00176                         RTTICreateInstanceFunc  createInstanceFunc, 
00177                         int flags); 
00178 
00185     RTTIClassDescriptor(char const* name, int size, int flags);
00186 
00190     ~RTTIClassDescriptor();
00191 
00192   protected:
00193     friend class RTTIRepository;
00194     friend class RTTIBfdRepository;
00195 
00196     RTTIClassDescriptor*    next;
00197     RTTIClassDescriptor*    collisionChain;
00198 
00199     RTTIMethodDescriptor*   methodList;
00200     RTTIMethodDescriptor**  methods;
00201     int                     nMethods;
00202 
00203     RTTIFieldDescriptor*    fieldList;
00204     RTTIFieldDescriptor**   fields;
00205     int                     nFields;
00206 
00207     int                     flags;
00208     int                     size;
00209 
00210     bool                    initialized;
00211     
00212     char const*             name;
00213     unsigned                hashCode;
00214 
00215     int                     nBaseClasses;    
00216     RTTIClassDescriptor**   baseClasses;
00217 
00218     RTTIDefaultConstructor  defaultConstructor;
00219     RTTICreateInstanceFunc  createInstanceFunc;
00220 
00221     void buildClassDescriptor();
00222 };
00223 
00224 
00225 #endif

Generated on Fri Apr 26 17:39:24 2002 for CppReflection by doxygen1.2.15