Skip to content

Instantly share code, notes, and snippets.

@copumpkin
Created April 23, 2009 00:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save copumpkin/100203 to your computer and use it in GitHub Desktop.
Save copumpkin/100203 to your computer and use it in GitHub Desktop.
// Something like this, anyway ;)
// by pumpkin
struct class_info_t {
struct class_info_t *metaclass; // maybe not exactly a class_info_t, maybe an info_table_t
struct class_info_t *superclass; // as above
void *cache;
void *vtable;
struct info_table_t *info;
}
struct info_table_t {
int version;
int info;
int instance_size;
int unk1;
char* name_ptr;
struct method_list_t *method_list;
struct protocol_list_t *protocol_list;
struct ivar_list_t *ivar_list;
int unk2;
struct property_list_t *property_list;
}
struct method_list_t {
int method_size;
int method_count;
struct method_t methods[];
}
struct method_t {
char *name;
char *type;
void *handler; // the actual code that handles the method
}
struct protocol_list_t {
int protocol_count;
struct protocol_t protocols[];
}
struct protocol_t {
int unk;
char *name;
}
struct ivar_list_t {
int ivar_size;
int ivar_count;
struct ivar_t ivars[];
}
struct ivar_t {
int unk1;
char *name;
char *type;
int unk2;
int memsize;
}
struct property_list_t {
int property_size;
int property_count;
struct property_t properties[];
}
struct property_t {
char *name;
char *info; // C = copy, R = readonly, & = retain
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment