#/*-*- Mode: C++ -*- */
MODULE = Moot PACKAGE = Moot::TokenReader
PROTOTYPES: DISABLE
##=====================================================================
## TokenReader: Constructors etc.
##--------------------------------------------------------------
## -- NO abstract constructor!
#TokenReader *
#new(char *CLASS, TokenIOFormatMask fmt=tiofWellDone)
#CODE:
# RETVAL=new TokenReader();
#OUTPUT:
# RETVAL
##--------------------------------------------------------------
void
DESTROY(TokenReader* tr)
CODE:
//fprintf(stderr, "TokenReader::DESTROY(%s) --> %p=%i\n", sv_getclass(ST(0)), tr,tr);
if (tr) delete tr;
##=====================================================================
## TokenReader: Input Selection
##--------------------------------------------------------------
void
close(TokenReader* tr)
CODE:
tr->close();
##--------------------------------------------------------------
int
opened(TokenReader* tr)
CODE:
RETVAL = tr->opened() ? 1 : 0;
OUTPUT:
RETVAL
##--------------------------------------------------------------
void
from_fh(TokenReader* tr, SV *ioref)
PREINIT:
mootPerlInputFH *mfh;
CODE:
mfh = new mootPerlInputFH(ioref);
tr->from_mstream(mfh);
tr->tr_istream_created = true;
##--------------------------------------------------------------
void
from_file(TokenReader* tr, const char *filename)
CODE:
tr->from_filename(filename);
##--------------------------------------------------------------
void
from_string(TokenReader* tr, SV *buf)
PREINIT:
mootPerlInputBuf *mfh;
CODE:
mfh = new mootPerlInputBuf(buf);
tr->from_mstream(mfh);
tr->tr_istream_created = true;
##=====================================================================
## Token-Level Access
##=====================================================================
##--------------------------------------------------------------
HV*
get_token(TokenReader* tr, bool utf8=TRUE)
PREINIT:
mootTokenType toktyp;
CODE:
toktyp = tr->get_token();
if (toktyp==TokTypeEOF) {
XSRETURN_UNDEF;
}
else RETVAL = token2hv( tr->token(), utf8 );
OUTPUT:
RETVAL
##--------------------------------------------------------------
AV*
get_sentence(TokenReader* tr, bool utf8=TRUE)
PREINIT:
mootTokenType toktyp;
CODE:
toktyp = tr->get_sentence();
if (toktyp==TokTypeEOF) {
XSRETURN_UNDEF;
}
else RETVAL = sentence2av( tr->sentence(), utf8 );
OUTPUT:
RETVAL
##=====================================================================
## TokenReader: Accessors
##--------------------------------------------------------------
TokenIOFormatMask
format(TokenReader* tr, ...)
CODE:
if (items > 1) {
TokenIOFormatMask fmt = SvUV( ST(1) );
tr->tr_format = fmt;
}
RETVAL = (TokenIOFormatMask)tr->tr_format;
OUTPUT:
RETVAL
##--------------------------------------------------------------
const char *
name(TokenReader* tr, ...)
CODE:
if (items > 1) {
const char *myname = SvPV_nolen( ST(1) );
tr->tr_name = myname;
}
RETVAL = tr->tr_name.c_str();
OUTPUT:
RETVAL
##--------------------------------------------------------------
size_t
line_number(TokenReader* tr, ...)
CODE:
if (items > 1) {
size_t n = (size_t)SvUV( ST(1) );
tr->line_number(n);
}
RETVAL = tr->line_number();
OUTPUT:
RETVAL
##--------------------------------------------------------------
size_t
column_number(TokenReader* tr, ...)
CODE:
if (items > 1) {
size_t n = (size_t)SvUV( ST(1) );
tr->column_number(n);
}
RETVAL = tr->column_number();
OUTPUT:
RETVAL
##--------------------------------------------------------------
size_t
byte_number(TokenReader* tr, ...)
CODE:
if (items > 1) {
size_t n = (size_t)SvUV( ST(1) );
tr->byte_number(n);
}
RETVAL = (size_t)tr->byte_number();
OUTPUT:
RETVAL
##=====================================================================
## TokenReaderNative
##=====================================================================
MODULE = Moot PACKAGE = Moot::TokenReader::Native
TokenReaderNative *
new(char *CLASS, TokenIOFormatMask fmt=tiofWellDone)
CODE:
RETVAL=new TokenReaderNative(fmt, CLASS);
OUTPUT:
RETVAL
##=====================================================================
## TokenReaderXML
##=====================================================================
MODULE = Moot PACKAGE = Moot::TokenReader::XML
##--------------------------------------------------------------
TokenReaderExpat *
new(char *CLASS, TokenIOFormatMask fmt=tiofXML)
CODE:
RETVAL=new TokenReaderExpat(fmt);
RETVAL->tr_name = CLASS;
OUTPUT:
RETVAL