Looks great to me - I've been looking for a way of simplifying that
process - Nice One!
Cheers.
On Sun, Sep 01, 2002 at 12:49:35AM +1000, Ken Williams wrote:
> 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