#define BASETYPE_MAGIC 0x12345
struct _person {
char *name;
};
typedef struct _person person;
#define SUBTYPE_MAGIC 0x3333
struct _pilot {
person base;
char *callsign;
};
typedef struct _pilot pilot;
person *
person_new(const char *name)
{
person *ptr = malloc(sizeof(person));
ptr->name = strdup(name);
return ptr;
}
void
person_free(person *ptr) {
{
return;
}
free(ptr->name);
free(ptr);
}
pilot *
pilot_new(const char *name, const char *callsign)
{
pilot *ptr = malloc(sizeof(pilot));
ptr->base.name = strdup(name);
ptr->callsign = strdup(callsign);
return ptr;
}
void
pilot_free(pilot *ptr) {
{
return;
}
free(ptr->base.name);
free(ptr->callsign);
free(ptr);
}
void
print_person(person *ptr)
{
return;
}
printf("name: %s\n", ptr->name);
}
void
print_pilot(pilot *ptr)
{
return;
}
print_person(&ptr->base);
printf("callsign: %s\n", ptr->callsign);
}
int
{
person *base;
pilot *sub;
base = person_new("Tyrol");
sub = pilot_new("thrace", "starbuck");
print_person(base);
print_person((person *)sub);
print_pilot((pilot *)base);
print_pilot(sub);
}