# -*- Mode: Perl -*-
mootLexfreqs* O_OBJECT
mootNgrams* O_OBJECT
mootHMM* O_OBJECT
mootDynHMM* O_OBJECT
mootDynLexHMM* O_OBJECT
mootDynLexHMM_Boltzmann* O_OBJECT
wasteLexicon* O_OBJECT
TokenReader* O_OBJECT
TokenWriter* O_OBJECT
TokenReaderNative* O_OBJECT
TokenWriterNative* O_OBJECT
TokenReaderExpat* O_OBJECT
TokenWriterExpat* O_OBJECT
wasteTokenScanner* O_OBJECT
wasteLexerReader* O_OBJECT
wasteDecoder* O_OBJECT
wasteAnnotatorWriter* O_OBJECT
#mootSentence* T_AV
TagStr T_CHAR
LexfreqCount T_FLOAT
NgramCount T_FLOAT
bool T_BOOL
size_t T_UV
TagID T_UV
TokID T_UV
mootEnumID T_UV
mootTokenType T_UV
#wasteScannerType T_UV
#wasteLexerType T_UV
TokenIOFormatMask T_UV
CountT T_DOUBLE
ProbT T_DOUBLE
######################################################################
# perl->C
INPUT
#T_std_string
# {
# char *cstr = SvPV_nolen($arg);
# $var.assign(cstr, SvCUR($arg));
# }
T_BYTE
{
$var = *( SvPV($arg,1) );
}
T_INT
{
$var = SvIV($arg);
}
T_UINT
{
$var = SvUV($arg);
}
T_FLOAT
{
$var = SvNV($arg);
}
T_GFSM_WEIGHT
{
gfsm_perl_weight_setfloat($var,SvNV($arg));
}
T_LABELID_VECTOR
{
//-------------------------- BEGIN T_LABELID_VECTOR perl->C
int _i;
AV *av=NULL;
if (SvROK($arg) && (SvTYPE(SvRV($arg)) == SVt_PVAV) )
av = (AV*)SvRV( $arg );
else {
warn( \"${Package}::$func_name() -- $var is not an AV reference\" );
XSRETURN_UNDEF;
}
$var = g_ptr_array_sized_new(av_len(av));
for (_i=0; _i <= av_len(av); _i++) {
SV **sv = av_fetch(av,_i,0);
if (sv && *sv) {
g_ptr_array_add($var, GUINT_TO_POINTER(SvUV(*sv)));
} else {
g_ptr_array_add($var, GUINT_TO_POINTER((guint)gfsmNoLabel));
}
}
//-------------------------- END T_LABELID_VECTOR perl->C
}
T_STATEID_VECTOR
{
//-------------------------- BEGIN T_STATEID_VECTOR perl->C
int _i;
AV *av=NULL;
if (SvROK($arg) && (SvTYPE(SvRV($arg)) == SVt_PVAV) )
av = (AV*)SvRV( $arg );
else {
warn( \"${Package}::$func_name() -- $var is not an AV reference\" );
XSRETURN_UNDEF;
}
$var = g_ptr_array_sized_new(av_len(av));
for (_i=0; _i <= av_len(av); _i++) {
SV **sv = av_fetch(av,_i,0);
if (sv && *sv) {
g_ptr_array_add($var, GUINT_TO_POINTER(SvUV(*sv)));
} else {
g_ptr_array_add($var, GUINT_TO_POINTER(gfsmNoState));
}
}
//-------------------------- END T_STATEID_VECTOR perl->C
}
######################################################################
# C->perl
OUTPUT
#T_std_string
# $arg = newSVpvn($var.data(), $var.length());
T_BYTE
{
sv_setpvn($arg,&$var,1);
}
T_INT
{
sv_setiv($arg,$var);
}
T_UINT
{
sv_setuv($arg,$var);
}
T_FLOAT
{
sv_setnv($arg,$var);
}
T_GFSM_WEIGHT
{
sv_setnv($arg, gfsm_perl_weight_getfloat($var));
}
T_LABELID_VECTOR
{
//-------------------------- BEGIN T_LABELID_VECTOR C->perl
int _i;
AV *av = newAV();
if ($var) {
for (_i=0; _i < $var->len; _i++) {
av_push(av, newSVuv((UV)GPOINTER_TO_UINT(g_ptr_array_index($var,_i))));
}
}
sv_2mortal((SV*)av);
$arg = newRV((SV*)av);
sv_2mortal($arg);
//-------------------------- END T_LABELID_VECTOR C->perl
}
T_STATEID_VECTOR
{
//-------------------------- BEGIN T_STATEID_VECTOR C->perl
int _i;
AV *av = newAV();
if ($var) {
for (_i=0; _i < $var->len; _i++) {
av_push(av, newSVuv((UV)GPOINTER_TO_UINT(g_ptr_array_index($var,_i))));
}
}
sv_2mortal((SV*)av);
$arg = newRV((SV*)av);
sv_2mortal($arg);
//-------------------------- END T_STATEID_VECTOR C->perl
}