MODULE = SWISH::3 PACKAGE = SWISH::3::Data PROTOTYPES: enable SV* s3(self) swish_ParserData *self; PREINIT: char *class; swish_3 *s3; CODE: self->s3->ref_cnt++; class = sp_Stash_get_char((SV*)self->s3->stash, SELF_CLASS_KEY); //warn("s3 class = %s\n", class); RETVAL = sp_bless_ptr( class, self->s3 ); OUTPUT: RETVAL CLEANUP: SvREFCNT_inc( RETVAL ); swish_Config* config(self) swish_ParserData* self PREINIT: char* CLASS; CODE: CLASS = sp_Stash_get_char(self->s3->stash, CONFIG_CLASS_KEY); self->s3->config->ref_cnt++; RETVAL = self->s3->config; OUTPUT: RETVAL SV* property(self, p) swish_ParserData* self; xmlChar* p; PREINIT: xmlBufferPtr buf; CODE: buf = swish_hash_fetch(self->properties->hash, p); RETVAL = newSVpvn((char*)xmlBufferContent(buf), xmlBufferLength(buf)); OUTPUT: RETVAL SV* metaname(self, m) swish_ParserData* self; xmlChar* m; PREINIT: xmlBufferPtr buf; CODE: buf = xmlHashLookup(self->metanames->hash, m); RETVAL = newSVpvn((char*)xmlBufferContent(buf), xmlBufferLength(buf)); OUTPUT: RETVAL SV* properties(self) swish_ParserData* self CODE: RETVAL = newRV_noinc((SV*)sp_nb_to_hash( self->properties )); OUTPUT: RETVAL SV* metanames(self) swish_ParserData* self CODE: RETVAL = newRV_noinc((SV*)sp_nb_to_hash(self->metanames)); OUTPUT: RETVAL swish_DocInfo * doc(self) swish_ParserData* self PREINIT: char* CLASS; CODE: CLASS = DOC_CLASS; self->docinfo->ref_cnt++; RETVAL = self->docinfo; OUTPUT: RETVAL swish_TokenIterator * tokens(self) swish_ParserData* self PREINIT: char* CLASS; CODE: CLASS = TOKENITERATOR_CLASS; self->token_iterator->ref_cnt++; // TODO needed? RETVAL = self->token_iterator; OUTPUT: RETVAL