Bio-PhyloXS

 view release on metacpan or  search on metacpan

lib/Bio/PhyloXS/Matrices/Datum.xs  view on Meta::CPAN

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

# include "src/Datum.h"
# include "src/TypeSafeData.h"
# include "src/types.h"

Datum* create(const char * classname) {
	Datum *self;
	Newx(self,1,Datum);
	initialize_datum(self);
	return self;
}

void initialize_datum(Datum* self){
	initialize_typesafedata((TypeSafeData*)self);
	self->position = 0;
	self->weight = 1.0;
	self->annotations = newAV();
	((Identifiable*)self)->_type = _DATUM_;
	((Identifiable*)self)->_container = _MATRIX_;
	((Identifiable*)self)->_index = _DATUM_IDX_;	
}

void destroy_datum(Datum* self) {
	destroy_typesafedata((TypeSafeData*)self);
	SvREFCNT_dec( self->annotations );
}
MODULE = Bio::PhyloXS::Matrices::Datum  PACKAGE = Bio::PhyloXS::Matrices::Datum  

PROTOTYPES: DISABLE


Datum *
create (classname)
	const char *	classname

void
initialize_datum (self)
	Datum *	self
        PREINIT:
        I32* temp;
        PPCODE:
        temp = PL_markstack_ptr++;
        initialize_datum(self);
        if (PL_markstack_ptr != temp) {
          /* truly void, because dXSARGS not invoked */
          PL_markstack_ptr = temp;
          XSRETURN_EMPTY; /* return empty stack */
        }
        /* must have used dXSARGS; list context implied */
        return; /* assume stack size is correct */

void
destroy_datum (self)
	Datum *	self
        PREINIT:
        I32* temp;
        PPCODE:
        temp = PL_markstack_ptr++;
        destroy_datum(self);
        if (PL_markstack_ptr != temp) {
          /* truly void, because dXSARGS not invoked */
          PL_markstack_ptr = temp;
          XSRETURN_EMPTY; /* return empty stack */
        }
        /* must have used dXSARGS; list context implied */
        return; /* assume stack size is correct */



( run in 0.717 second using v1.01-cache-2.11-cpan-71847e10f99 )