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

Reply via email to