Bio-PhyloXS

 view release on metacpan or  search on metacpan

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

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

# include "src/Matrix.h"
# include "src/TypeSafeData.h"
# include "src/Characters.h"
# include "src/types.h"

Matrix* create(const char * classname) {
	Matrix *self;
	Newx(self,1,Matrix);
	initialize_matrix(self);
	return self;
}

void initialize_matrix(Matrix* self){
	initialize_typesafedata((TypeSafeData*)self);
	self->charlabels = newAV();
	self->statelabels = newAV();
	self->gapmode = 1;
	self->matchchar = '.';
	self->polymorphism = 0;
	self->respectcase = 1;
	((Identifiable*)self)->_type = _MATRIX_;
	((Identifiable*)self)->_container = _MATRICES_;	
	((Identifiable*)self)->_index = _MATRIX_IDX_;		
	
	// allocate and initialize Characters* field
	Newx(self->characters,1,Characters);
	initialize_characters(self->characters);
}

void destroy_matrix(Matrix* self) {
	destroy_characters(self->characters);
	destroy_typesafedata((TypeSafeData*)self);
	//Safefree(self);
}
MODULE = Bio::PhyloXS::Matrices::Matrix  PACKAGE = Bio::PhyloXS::Matrices::Matrix  

PROTOTYPES: DISABLE


Matrix *
create (classname)
	const char *	classname

void
initialize_matrix (self)
	Matrix *	self
        PREINIT:
        I32* temp;
        PPCODE:
        temp = PL_markstack_ptr++;
        initialize_matrix(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_matrix (self)
	Matrix *	self
        PREINIT:
        I32* temp;
        PPCODE:
        temp = PL_markstack_ptr++;
        destroy_matrix(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.990 second using v1.01-cache-2.11-cpan-71847e10f99 )