#/*-*- Mode: C++ -*- */
MODULE = Moot PACKAGE = Moot::TokenWriter
PROTOTYPES: DISABLE
##=====================================================================
## TokenWriter: Constructors etc.
##--------------------------------------------------------------
## -- NO abstract constructor!
#TokenWriter *
#new(char *CLASS, TokenIOFormatMask fmt=tiofWellDone)
#CODE:
# RETVAL=new TokenWriter();
#OUTPUT:
# RETVAL
##--------------------------------------------------------------
void
DESTROY(TokenWriter* tw)
CODE:
if (tw) delete tw;
##=====================================================================
## TokenWriter: Output Selection
##--------------------------------------------------------------
void
close(TokenWriter* tw)
CODE:
tw->close();
##--------------------------------------------------------------
int
opened(TokenWriter* tw)
CODE:
RETVAL = tw->opened() ? 1 : 0;
OUTPUT:
RETVAL
##--------------------------------------------------------------
void
to_fh(TokenWriter* tw, SV *ioref)
PREINIT:
mootPerlOutputFH *mfh;
CODE:
mfh = new mootPerlOutputFH(ioref);
tw->to_mstream(mfh);
tw->tw_ostream_created = true;
##--------------------------------------------------------------
void
to_file(TokenWriter* tw, const char *filename)
CODE:
tw->to_filename(filename);
##--------------------------------------------------------------
## to_string(): wrapped perl-side with string-fh; otherwise we would need full-blown mootio wrapper
#void to_string(TokenWriter* tw, SV *buf)
##=====================================================================
## TokenWriter: Token Stream Operations
##=====================================================================
##--------------------------------------------------------------
void
put_token(TokenWriter *tw, HV *tok)
PREINIT:
mootToken mtok;
CODE:
hv2token(tok,&mtok);
tw->put_token(mtok);
##--------------------------------------------------------------
void
put_tokens(TokenWriter *tw, AV *tokens)
PREINIT:
mootSentence ms;
CODE:
av2sentence(tokens,&ms);
tw->put_tokens(ms);
##--------------------------------------------------------------
void
put_sentence(TokenWriter *tw, AV *sent)
PREINIT:
mootSentence ms;
CODE:
av2sentence(sent,&ms);
tw->put_sentence(ms);
##--------------------------------------------------------------
void
put_comment_block_begin(TokenWriter *tw)
CODE:
tw->put_comment_block_begin();
##--------------------------------------------------------------
void
put_comment_block_end(TokenWriter *tw)
CODE:
tw->put_comment_block_end();
##--------------------------------------------------------------
void
put_comment(TokenWriter *tw, SV *comment_str)
PREINIT:
STRLEN len;
char *buf;
CODE:
buf = SvPV(comment_str, len);
tw->put_comment_buffer(buf,len);
##--------------------------------------------------------------
void
put_raw(TokenWriter *tw, SV *raw_str);
PREINIT:
STRLEN len;
char *buf;
CODE:
buf = SvPV(raw_str, len);
tw->put_raw_buffer(buf,len);
##=====================================================================
## TokenWriter: Accessors
##--------------------------------------------------------------
TokenIOFormatMask
format(TokenWriter* tw, ...)
CODE:
if (items > 1) {
TokenIOFormatMask fmt = SvUV( ST(1) );
tw->tw_format = fmt;
}
RETVAL = (TokenIOFormatMask)tw->tw_format;
OUTPUT:
RETVAL
##--------------------------------------------------------------
const char *
name(TokenWriter* tw, ...)
CODE:
if (items > 1) {
const char *myname = SvPV_nolen( ST(1) );
tw->tw_name = myname;
}
RETVAL = tw->tw_name.c_str();
OUTPUT:
RETVAL
##=====================================================================
## TokenWriterNative
##=====================================================================
MODULE = Moot PACKAGE = Moot::TokenWriter::Native
TokenWriterNative *
new(char *CLASS, TokenIOFormatMask fmt=tiofWellDone)
CODE:
RETVAL=new TokenWriterNative(fmt, CLASS);
OUTPUT:
RETVAL
##=====================================================================
## TokenWriterXML
##=====================================================================
MODULE = Moot PACKAGE = Moot::TokenWriter::XML
##--------------------------------------------------------------
TokenWriterExpat *
new(char *CLASS, TokenIOFormatMask fmt=tiofXML)
CODE:
RETVAL=new TokenWriterExpat(fmt);
RETVAL->tw_name = CLASS;
OUTPUT:
RETVAL