Hi,
The C-Cookbook has the following code for doing object-oriented Inline:
SV* new(char* class, char* name, char* rank, long serial) {
Soldier* soldier = malloc(sizeof(Soldier));
SV* obj_ref = newSViv(0);
SV* obj = newSVrv(obj_ref, class);
soldier->name = strdup(name);
soldier->rank = strdup(rank);
soldier->serial = serial;
sv_setiv(obj, (IV)soldier);
SvREADONLY_on(obj);
return obj_ref;
}
I've found that the following simpler code works just as well:
SV* new(char* class, char* name, char* rank, long serial) {
Soldier* soldier = malloc(sizeof(Soldier));
soldier->name = strdup(name);
soldier->rank = strdup(rank);
soldier->serial = serial;
return sv_setref_pv(newSViv(0), class, (void *)soldier);
}
Any reason not to use that?
-Ken