/* * This file was generated automatically by ExtUtils::ParseXS version 2.18 from the * contents of Node.xs. Do not edit this file, edit Node.xs instead. * * ANY CHANGES MADE HERE WILL BE LOST! * */ #line 1 "lib/Tree/Node.xs" #if USE_MALLOC #include #endif #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #define NEED_newRV_noinc #include "ppport.h" #include "TreeNode.h" /* Since an IV is large enough to hold a pointer (see ), we use that to store the new node information. */ #define SV2NODE(S) (Node*) SvIV(SvRV(S)) #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(var) if (0) var = var #endif #line 37 "lib/Tree/Node.c" XS(XS_Tree__Node_new); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_new) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::new", "package, child_count"); PERL_UNUSED_VAR(cv); /* -W */ { char * package = (char *)SvPV_nolen(ST(0)); int child_count = (int)SvIV(ST(1)); SV * RETVAL; #line 33 "lib/Tree/Node.xs" Node* self = new(child_count); SV* n = newSViv((IV) self); RETVAL = newRV_noinc(n); sv_bless(RETVAL, gv_stashpv(package, 0)); SvREADONLY_on(n); while (child_count--) self->next[child_count] = &PL_sv_undef; #line 62 "lib/Tree/Node.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } XS(XS_Tree__Node_to_p_node); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_to_p_node) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::to_p_node", "n"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); IV RETVAL; dXSTARG; #line 48 "lib/Tree/Node.xs" RETVAL = (IV) SV2NODE(n); #line 87 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_p_new); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_new) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_new", "child_count"); PERL_UNUSED_VAR(cv); /* -W */ { int child_count = (int)SvIV(ST(0)); IV RETVAL; dXSTARG; #line 57 "lib/Tree/Node.xs" Node* self = new(child_count); while (child_count--) self->next[child_count] = NULL; RETVAL = (IV) self; #line 114 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_DESTROY); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_DESTROY) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::DESTROY", "n"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); #line 69 "lib/Tree/Node.xs" Node* self = SV2NODE(n); int child_count = self->child_count; while (child_count--) SvREFCNT_dec(self->next[child_count]); DESTROY(self); #line 140 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_p_destroy); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_destroy) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_destroy", "self"); PERL_UNUSED_VAR(cv); /* -W */ { IV self = (IV)SvIV(ST(0)); #line 80 "lib/Tree/Node.xs" if (self) DESTROY((Node*) self); #line 161 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_MAX_LEVEL); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_MAX_LEVEL) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 0) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::MAX_LEVEL", ""); PERL_UNUSED_VAR(cv); /* -W */ { int RETVAL; dXSTARG; #line 86 "lib/Tree/Node.xs" RETVAL = MAX_LEVEL; #line 183 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node__allocated_by_child_count); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node__allocated_by_child_count) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::_allocated_by_child_count", "count"); PERL_UNUSED_VAR(cv); /* -W */ { int count = (int)SvIV(ST(0)); int RETVAL; dXSTARG; #line 95 "lib/Tree/Node.xs" RETVAL = NODESIZE(count); #line 207 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node__allocated); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node__allocated) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::_allocated", "n"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); int RETVAL; dXSTARG; #line 104 "lib/Tree/Node.xs" Node* self = SV2NODE(n); RETVAL = _allocated(self); #line 232 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_p_allocated); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_allocated) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_allocated", "n"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); int RETVAL; dXSTARG; #line 114 "lib/Tree/Node.xs" RETVAL = _allocated((Node*) n); #line 256 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_add_children); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_add_children) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif dXSI32; if (items < 1) Perl_croak(aTHX_ "Usage: %s(%s)", GvNAME(CvGV(cv)), "n, ..."); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); #line 126 "lib/Tree/Node.xs" int num = 1; #line 279 "lib/Tree/Node.c" #line 128 "lib/Tree/Node.xs" Node* back; Node* self = SV2NODE(n); int count = self->child_count; int i; num = items-1; if (num<1) croak("number of children to add must be >= 1"); if ((count+num) > MAX_LEVEL) croak("cannot %d children: we already have %d children", num, count); back = self; #if USE_MALLOC self = realloc(self, (size_t) NODESIZE(count+num)); if (self==NULL) croak("unable to allocate additional memory"); #else Renewc(self, NODESIZE(count+num), char, Node); #endif if (self != back) { SvREADONLY_off((SV*)SvRV(n)); sv_setiv((SV*) SvRV(n), (IV) self); SvREADONLY_on((SV*)SvRV(n)); } self->child_count += num; if (ix==0) { for(i=0; inext[count+i] = newSVsv(ST(i+1)); } else if (ix==1) { for(i=(count-1); i>=0; i--) self->next[i+num] = self->next[i]; for(i=0; inext[i] = newSVsv(ST(i+1)); } #line 320 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_child_count); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_child_count) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::child_count", "n"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); int RETVAL; dXSTARG; #line 173 "lib/Tree/Node.xs" Node* self = SV2NODE(n); RETVAL = child_count(self); #line 344 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_p_child_count); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_child_count) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_child_count", "self"); PERL_UNUSED_VAR(cv); /* -W */ { IV self = (IV)SvIV(ST(0)); int RETVAL; dXSTARG; #line 183 "lib/Tree/Node.xs" RETVAL = child_count((Node*) self); #line 368 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_get_children); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_get_children) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::get_children", "n"); PERL_UNUSED_VAR(cv); /* -W */ PERL_UNUSED_VAR(ax); /* -Wall */ SP -= items; { SV* n = ST(0); #line 192 "lib/Tree/Node.xs" int i; #line 392 "lib/Tree/Node.c" #line 194 "lib/Tree/Node.xs" Node* self = SV2NODE(n); EXTEND(SP, self->child_count); for (i = 0; i < self->child_count; i++) PUSHs(get_child(self, i)); #line 398 "lib/Tree/Node.c" PUTBACK; return; } } XS(XS_Tree__Node_get_child); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_get_child) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::get_child", "n, index"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); int index = (int)SvIV(ST(1)); SV * RETVAL; #line 205 "lib/Tree/Node.xs" Node* self = SV2NODE(n); RETVAL = get_child(self, index); #line 423 "lib/Tree/Node.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } XS(XS_Tree__Node_p_get_child); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_get_child) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_get_child", "n, index"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); int index = (int)SvIV(ST(1)); IV RETVAL; dXSTARG; #line 216 "lib/Tree/Node.xs" Node* self = (Node*) n; if ((index >= self->child_count) || (index < 0)) croak("index out of bounds: must be between [0..%d]", self->child_count-1); RETVAL = (IV) self->next[index]; #line 452 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_p_get_child_or_null); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_get_child_or_null) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_get_child_or_null", "n, index"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); int index = (int)SvIV(ST(1)); IV RETVAL; dXSTARG; #line 229 "lib/Tree/Node.xs" Node* self = (Node*) n; if ((index >= self->child_count) || (index < 0)) RETVAL = (IV) NULL; else RETVAL = (IV) self->next[index]; #line 481 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_get_child_or_undef); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_get_child_or_undef) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::get_child_or_undef", "n, index"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); int index = (int)SvIV(ST(1)); SV * RETVAL; #line 244 "lib/Tree/Node.xs" Node* self = SV2NODE(n); RETVAL = get_child_or_undef(self, index); #line 506 "lib/Tree/Node.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } XS(XS_Tree__Node_set_child); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_set_child) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 3) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::set_child", "n, index, t"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); int index = (int)SvIV(ST(1)); SV* t = ST(2); #line 256 "lib/Tree/Node.xs" Node* self = SV2NODE(n); set_child(self, index, t); #line 532 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_p_set_child); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_set_child) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 3) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_set_child", "n, index, t"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); int index = (int)SvIV(ST(1)); IV t = (IV)SvIV(ST(2)); #line 266 "lib/Tree/Node.xs" Node* self = (Node*) n; if ((index >= self->child_count) || (index < 0)) croak("index out of bounds: must be between [0..%d]", self->child_count-1); self->next[index] = (SV*) t; #line 558 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_set_key); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_set_key) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::set_key", "n, k"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); SV* k = ST(1); #line 277 "lib/Tree/Node.xs" Node* self = SV2NODE(n); set_key(self, k); #line 581 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_p_set_key); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_set_key) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_set_key", "n, k"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); SV* k = ST(1); #line 286 "lib/Tree/Node.xs" set_key((Node*) n, k); #line 603 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_key); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_key) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::key", "n"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); SV * RETVAL; #line 293 "lib/Tree/Node.xs" Node* self = SV2NODE(n); RETVAL = get_key(self); #line 626 "lib/Tree/Node.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } XS(XS_Tree__Node_p_get_key); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_get_key) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_get_key", "n"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); SV * RETVAL; #line 303 "lib/Tree/Node.xs" RETVAL = get_key((Node*) n); #line 650 "lib/Tree/Node.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } XS(XS_Tree__Node_p_key_cmp); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_key_cmp) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_key_cmp", "n, k"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); SV* k = ST(1); I32 RETVAL; dXSTARG; #line 313 "lib/Tree/Node.xs" RETVAL = key_cmp((Node*) n, k); #line 676 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_key_cmp); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_key_cmp) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::key_cmp", "n, k"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); SV* k = ST(1); I32 RETVAL; dXSTARG; #line 323 "lib/Tree/Node.xs" Node* self = SV2NODE(n); RETVAL = key_cmp(self, k); #line 702 "lib/Tree/Node.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_Tree__Node_set_value); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_set_value) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::set_value", "n, v"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); SV* v = ST(1); #line 334 "lib/Tree/Node.xs" Node* self = SV2NODE(n); set_value(self, v); #line 726 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_p_set_value); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_set_value) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 2) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_set_value", "n, v"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); SV* v = ST(1); #line 343 "lib/Tree/Node.xs" set_value((Node*) n, v); #line 748 "lib/Tree/Node.c" } XSRETURN_EMPTY; } XS(XS_Tree__Node_value); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_value) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::value", "n"); PERL_UNUSED_VAR(cv); /* -W */ { SV* n = ST(0); SV * RETVAL; #line 350 "lib/Tree/Node.xs" Node* self = SV2NODE(n); RETVAL = get_value(self); #line 771 "lib/Tree/Node.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } XS(XS_Tree__Node_p_get_value); /* prototype to pass -Wmissing-prototypes */ XS(XS_Tree__Node_p_get_value) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Tree::Node::p_get_value", "n"); PERL_UNUSED_VAR(cv); /* -W */ { IV n = (IV)SvIV(ST(0)); SV * RETVAL; #line 360 "lib/Tree/Node.xs" RETVAL = get_value((Node*) n); #line 795 "lib/Tree/Node.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } #ifdef __cplusplus extern "C" #endif XS(boot_Tree__Node); /* prototype to pass -Wmissing-prototypes */ XS(boot_Tree__Node) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif char* file = __FILE__; PERL_UNUSED_VAR(cv); /* -W */ PERL_UNUSED_VAR(items); /* -W */ XS_VERSION_BOOTCHECK ; { CV * cv ; newXSproto("Tree::Node::new", XS_Tree__Node_new, file, "$$"); newXSproto("Tree::Node::to_p_node", XS_Tree__Node_to_p_node, file, "$"); newXSproto("Tree::Node::p_new", XS_Tree__Node_p_new, file, "$$"); newXSproto("Tree::Node::DESTROY", XS_Tree__Node_DESTROY, file, "$"); newXSproto("Tree::Node::p_destroy", XS_Tree__Node_p_destroy, file, "$"); newXSproto("Tree::Node::MAX_LEVEL", XS_Tree__Node_MAX_LEVEL, file, ""); newXSproto("Tree::Node::_allocated_by_child_count", XS_Tree__Node__allocated_by_child_count, file, "$"); newXSproto("Tree::Node::_allocated", XS_Tree__Node__allocated, file, "$"); newXSproto("Tree::Node::p_allocated", XS_Tree__Node_p_allocated, file, "$"); cv = newXS("Tree::Node::add_children_left", XS_Tree__Node_add_children, file); XSANY.any_i32 = 1 ; sv_setpv((SV*)cv, "$;@") ; cv = newXS("Tree::Node::add_children", XS_Tree__Node_add_children, file); XSANY.any_i32 = 0 ; sv_setpv((SV*)cv, "$;@") ; newXSproto("Tree::Node::child_count", XS_Tree__Node_child_count, file, "$"); newXSproto("Tree::Node::p_child_count", XS_Tree__Node_p_child_count, file, "$"); newXSproto("Tree::Node::get_children", XS_Tree__Node_get_children, file, "$"); newXSproto("Tree::Node::get_child", XS_Tree__Node_get_child, file, "$$"); newXSproto("Tree::Node::p_get_child", XS_Tree__Node_p_get_child, file, "$$"); newXSproto("Tree::Node::p_get_child_or_null", XS_Tree__Node_p_get_child_or_null, file, "$$"); newXSproto("Tree::Node::get_child_or_undef", XS_Tree__Node_get_child_or_undef, file, "$$"); newXSproto("Tree::Node::set_child", XS_Tree__Node_set_child, file, "$$$"); newXSproto("Tree::Node::p_set_child", XS_Tree__Node_p_set_child, file, "$$$"); newXSproto("Tree::Node::set_key", XS_Tree__Node_set_key, file, "$$"); newXSproto("Tree::Node::p_set_key", XS_Tree__Node_p_set_key, file, "$$"); newXSproto("Tree::Node::key", XS_Tree__Node_key, file, "$"); newXSproto("Tree::Node::p_get_key", XS_Tree__Node_p_get_key, file, "$"); newXSproto("Tree::Node::p_key_cmp", XS_Tree__Node_p_key_cmp, file, "$$"); newXSproto("Tree::Node::key_cmp", XS_Tree__Node_key_cmp, file, "$$"); newXSproto("Tree::Node::set_value", XS_Tree__Node_set_value, file, "$$"); newXSproto("Tree::Node::p_set_value", XS_Tree__Node_p_set_value, file, "$$"); newXSproto("Tree::Node::value", XS_Tree__Node_value, file, "$"); newXSproto("Tree::Node::p_get_value", XS_Tree__Node_p_get_value, file, "$"); } XSRETURN_YES; }