#define uchar unsigned char
#define uint32 unsigned long
#define uint16 unsigned int
#define NULL 0
typedef struct WClassStructA {
uint16 numSuperClasses;
uint16 classNameIndex;
uchar *byteRep; // pointer to class representation in memory (bytes)
uchar *attrib2; // pointer to area after constant pool (accessFlags)
uint16 numConstants;
uint16 numFields;
uint16 numMethods;
} WClassA;
typedef struct WClassStrucB {
uint16 numVars; // computed number of object variables
} WClassB;
typedef struct WClassStruct {
struct WClassStruct **superClasses; // array of this classes superclasses
WClassA* firstPart;
WClassB* secondPart;
struct WClassStruct *nextClass; // next class in hash table linked list
} WClass;
typedef struct UtfStringStruct {
char *str;
uint32 len;
} UtfString;
static WClass* getClass(UtfString className);
static UtfString* createUtfString(char *buf);
int main() {
WClass* stringClass;
UtfString* pJavaLangString;
pJavaLangString = createUtfString("java/lang/String");
stringClass = getClass(*pJavaLangString);
return 0;
}
static WClass* getClass(UtfString className) {
return NULL;
}
static UtfString* createUtfString(char *buf) {
UtfString s;
s.str = buf;
return (UtfString*)malloc(sizeof(UtfString));
}