#include <stdio.h> #include <stdlib.h> #include "CoreP.h" static void initialize_instance(CoreClassDescriptor *descriptor, Core p) { if (descriptor->core.super_class != NULL) { initialize_instance(descriptor->core.super_class, p); } if (descriptor->core.initializer) { descriptor->core.initializer(p); } } Core new_instance(CoreClassDescriptor *descriptor) { Core p; p = malloc(descriptor->core.size_of_instance); p->core.class_descriptor = descriptor; initialize_instance(descriptor, p); return p; }