sure. you are right; but see, a (Node *) has no information about its (SV *). A workaround would be
typedef struct treeNode {
char* name;
char* desc;
char* class; //in case we need it
double branch_length;
SV* obj; // the perlobj
SV* obj_ref; // the ref to the perlobj
struct treeNode *parent;
} Node;
SV* new(char* class, char* name, char* desc, double branch_length) {
Node* node = malloc(sizeof(Node));
node->obj_ref = newSViv(0);
node->obj = newSVrv(obj_ref, class);
node->class = savepv(class);
node->name = savepv(name);
node->desc = savepv(desc);
node->branch_length = branch_length;
node->parent = NULL; // no parent yet
sv_setiv(node->obj, (IV)node);
SvREADONLY_on(node->obj);
return node->obj_ref;
}
SV* get_parent(SV* obj) {
Node *node = (Node *)SvIV(SvRV(obj));
if(node != NULL && node->parent != NULL)
return node->parent->obj_ref;
else
return NULL; // not sure
}
HTH
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|