cleaned up Awk.cpp

This commit is contained in:
hyung-hwan 2009-07-07 06:37:25 +00:00
parent 65a69c5522
commit 8a61d58b7b
2 changed files with 137 additions and 137 deletions

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.hpp 220 2009-07-01 13:14:39Z hyunghwan.chung $ * $Id: Awk.hpp 223 2009-07-06 12:37:25Z hyunghwan.chung $
* *
Copyright 2006-2009 Chung, Hyung-Hwan. Copyright 2006-2009 Chung, Hyung-Hwan.
@ -188,13 +188,15 @@ public:
void* handle; void* handle;
}; };
class Run;
/** /**
* RIO class * RIO class
*/ */
class RIOBase class RIOBase
{ {
protected: protected:
RIOBase (rtx_t* rtx, rio_arg_t* riod); RIOBase (Run* run, rio_arg_t* riod);
public: public:
const char_t* getName() const; const char_t* getName() const;
@ -207,7 +209,7 @@ public:
operator rtx_t* () const; operator rtx_t* () const;
protected: protected:
rtx_t* rtx; Run* run;
rio_arg_t* riod; rio_arg_t* riod;
}; };
@ -227,7 +229,7 @@ public:
}; };
protected: protected:
Pipe (rtx_t* rtx, rio_arg_t* riod); Pipe (Run* run, rio_arg_t* riod);
public: public:
Mode getMode () const; Mode getMode () const;
@ -249,7 +251,7 @@ public:
}; };
protected: protected:
File (rtx_t* rtx, rio_arg_t* riod); File (Run* run, rio_arg_t* riod);
public: public:
Mode getMode () const; Mode getMode () const;
@ -270,7 +272,7 @@ public:
}; };
protected: protected:
Console (rtx_t* rtx, rio_arg_t* riod); Console (Run* run, rio_arg_t* riod);
~Console (); ~Console ();
public: public:
@ -282,7 +284,6 @@ public:
char_t* filename; char_t* filename;
}; };
class Run;
class Argument; class Argument;
class Return; class Return;
@ -721,7 +722,7 @@ public:
protected: protected:
Awk* awk; Awk* awk;
rtx_t* run; rtx_t* rtx;
void* data; void* data;
}; };

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.cpp 220 2009-07-01 13:14:39Z hyunghwan.chung $ * $Id: Awk.cpp 223 2009-07-06 12:37:25Z hyunghwan.chung $
* *
Copyright 2006-2009 Chung, Hyung-Hwan. Copyright 2006-2009 Chung, Hyung-Hwan.
@ -62,7 +62,7 @@ void Awk::Source::setHandle (void* handle)
// Awk::RIO // Awk::RIO
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
Awk::RIOBase::RIOBase (rtx_t* rtx, rio_arg_t* riod): rtx (rtx), riod (riod) Awk::RIOBase::RIOBase (Run* run, rio_arg_t* riod): run (run), riod (riod)
{ {
} }
@ -83,13 +83,12 @@ void Awk::RIOBase::setHandle (void* handle)
Awk::RIOBase::operator Awk* () const Awk::RIOBase::operator Awk* () const
{ {
rxtn_t* rxtn = (rxtn_t*) QSE_XTN (this->rtx); return this->run->awk;
return rxtn->run->awk;
} }
Awk::RIOBase::operator Awk::awk_t* () const Awk::RIOBase::operator Awk::awk_t* () const
{ {
return qse_awk_rtx_getawk (this->rtx); return qse_awk_rtx_getawk (this->run->rtx);
} }
Awk::RIOBase::operator Awk::rio_arg_t* () const Awk::RIOBase::operator Awk::rio_arg_t* () const
@ -99,14 +98,14 @@ Awk::RIOBase::operator Awk::rio_arg_t* () const
Awk::RIOBase::operator Awk::rtx_t* () const Awk::RIOBase::operator Awk::rtx_t* () const
{ {
return this->rtx; return this->run->rtx;
} }
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
// Awk::Pipe // Awk::Pipe
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
Awk::Pipe::Pipe (rtx_t* rtx, rio_arg_t* riod): RIOBase (rtx, riod) Awk::Pipe::Pipe (Run* run, rio_arg_t* riod): RIOBase (run, riod)
{ {
} }
@ -119,7 +118,7 @@ Awk::Pipe::Mode Awk::Pipe::getMode () const
// Awk::File // Awk::File
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
Awk::File::File (rtx_t* rtx, rio_arg_t* riod): RIOBase (rtx, riod) Awk::File::File (Run* run, rio_arg_t* riod): RIOBase (run, riod)
{ {
} }
@ -132,8 +131,8 @@ Awk::File::Mode Awk::File::getMode () const
// Awk::Console // Awk::Console
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
Awk::Console::Console (rtx_t* rtx, rio_arg_t* riod): Awk::Console::Console (Run* run, rio_arg_t* riod):
RIOBase (rtx, riod), filename(QSE_NULL) RIOBase (run, riod), filename (QSE_NULL)
{ {
} }
@ -150,12 +149,12 @@ int Awk::Console::setFileName (const char_t* name)
if (riod->mode == READ) if (riod->mode == READ)
{ {
return qse_awk_rtx_setfilename ( return qse_awk_rtx_setfilename (
this->rtx, name, qse_strlen(name)); this->run->rtx, name, qse_strlen(name));
} }
else else
{ {
return qse_awk_rtx_setofilename ( return qse_awk_rtx_setofilename (
this->rtx, name, qse_strlen(name)); this->run->rtx, name, qse_strlen(name));
} }
} }
@ -164,12 +163,12 @@ int Awk::Console::setFNR (long_t fnr)
qse_awk_val_t* tmp; qse_awk_val_t* tmp;
int n; int n;
tmp = qse_awk_rtx_makeintval (this->rtx, fnr); tmp = qse_awk_rtx_makeintval (this->run->rtx, fnr);
if (tmp == QSE_NULL) return -1; if (tmp == QSE_NULL) return -1;
qse_awk_rtx_refupval (this->rtx, tmp); qse_awk_rtx_refupval (this->run->rtx, tmp);
n = qse_awk_rtx_setgbl (this->rtx, QSE_AWK_GBL_FNR, tmp); n = qse_awk_rtx_setgbl (this->run->rtx, QSE_AWK_GBL_FNR, tmp);
qse_awk_rtx_refdownval (this->rtx, tmp); qse_awk_rtx_refdownval (this->run->rtx, tmp);
return n; return n;
} }
@ -232,7 +231,7 @@ void Awk::Argument::clear ()
/* when the value is a map, str.ptr and str.len are /* when the value is a map, str.ptr and str.len are
* used for index iteration in getFirstIndex & getNextIndex */ * used for index iteration in getFirstIndex & getNextIndex */
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = QSE_NULL; this->val = QSE_NULL;
} }
else else
@ -253,7 +252,7 @@ void Awk::Argument::clear ()
if (this->val != QSE_NULL) if (this->val != QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = QSE_NULL; this->val = QSE_NULL;
} }
@ -312,13 +311,13 @@ int Awk::Argument::init (val_t* v)
QSE_ASSERT (this->val == QSE_NULL); QSE_ASSERT (this->val == QSE_NULL);
QSE_ASSERT (v != QSE_NULL); QSE_ASSERT (v != QSE_NULL);
qse_awk_rtx_refupval (this->run->run, v); qse_awk_rtx_refupval (this->run->rtx, v);
this->val = v; this->val = v;
if (v->type == QSE_AWK_VAL_STR) if (v->type == QSE_AWK_VAL_STR)
{ {
int n = qse_awk_rtx_valtonum ( int n = qse_awk_rtx_valtonum (
this->run->run, v, &this->inum, &this->rnum); this->run->rtx, v, &this->inum, &this->rnum);
if (n == 0) if (n == 0)
{ {
this->rnum = (qse_real_t)this->inum; this->rnum = (qse_real_t)this->inum;
@ -340,7 +339,7 @@ int Awk::Argument::init (val_t* v)
this->rnum = (qse_real_t)((qse_awk_val_int_t*)v)->val; this->rnum = (qse_real_t)((qse_awk_val_int_t*)v)->val;
this->str.ptr = qse_awk_rtx_valtocpldup ( this->str.ptr = qse_awk_rtx_valtocpldup (
this->run->run, v, &this->str.len); this->run->rtx, v, &this->str.len);
if (this->str.ptr != QSE_NULL) return 0; if (this->str.ptr != QSE_NULL) return 0;
} }
else if (v->type == QSE_AWK_VAL_REAL) else if (v->type == QSE_AWK_VAL_REAL)
@ -349,7 +348,7 @@ int Awk::Argument::init (val_t* v)
this->rnum = ((qse_awk_val_real_t*)v)->val; this->rnum = ((qse_awk_val_real_t*)v)->val;
this->str.ptr = qse_awk_rtx_valtocpldup ( this->str.ptr = qse_awk_rtx_valtocpldup (
this->run->run, v, &this->str.len); this->run->rtx, v, &this->str.len);
if (this->str.ptr != QSE_NULL) return 0; if (this->str.ptr != QSE_NULL) return 0;
} }
else if (v->type == QSE_AWK_VAL_NIL) else if (v->type == QSE_AWK_VAL_NIL)
@ -358,7 +357,7 @@ int Awk::Argument::init (val_t* v)
this->rnum = 0.0; this->rnum = 0.0;
this->str.ptr = qse_awk_rtx_valtocpldup ( this->str.ptr = qse_awk_rtx_valtocpldup (
this->run->run, v, &this->str.len); this->run->rtx, v, &this->str.len);
if (this->str.ptr != QSE_NULL) return 0; if (this->str.ptr != QSE_NULL) return 0;
} }
else if (v->type == QSE_AWK_VAL_MAP) else if (v->type == QSE_AWK_VAL_MAP)
@ -371,7 +370,7 @@ int Awk::Argument::init (val_t* v)
} }
// an error has occurred // an error has occurred
qse_awk_rtx_refdownval (this->run->run, v); qse_awk_rtx_refdownval (this->run->rtx, v);
this->val = QSE_NULL; this->val = QSE_NULL;
return -1; return -1;
} }
@ -384,7 +383,7 @@ int Awk::Argument::init (const char_t* str, size_t len)
this->str.len = len; this->str.len = len;
if (qse_awk_rtx_strtonum ( if (qse_awk_rtx_strtonum (
this->run->run, 0, this->run->rtx, 0,
str, len, &this->inum, &this->rnum) == 0) str, len, &this->inum, &this->rnum) == 0)
{ {
this->rnum = (real_t)this->inum; this->rnum = (real_t)this->inum;
@ -584,12 +583,12 @@ int Awk::Return::set (long_t v)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->run != QSE_NULL);
qse_awk_val_t* x = qse_awk_rtx_makeintval (this->run->run, v); qse_awk_val_t* x = qse_awk_rtx_makeintval (this->run->rtx, v);
if (x == QSE_NULL) return -1; if (x == QSE_NULL) return -1;
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = x; this->val = x;
qse_awk_rtx_refupval (this->run->run, this->val); qse_awk_rtx_refupval (this->run->rtx, this->val);
return 0; return 0;
} }
@ -598,12 +597,12 @@ int Awk::Return::set (real_t v)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->run != QSE_NULL);
qse_awk_val_t* x = qse_awk_rtx_makerealval (this->run->run, v); qse_awk_val_t* x = qse_awk_rtx_makerealval (this->run->rtx, v);
if (x == QSE_NULL) return -1; if (x == QSE_NULL) return -1;
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = x; this->val = x;
qse_awk_rtx_refupval (this->run->run, this->val); qse_awk_rtx_refupval (this->run->rtx, this->val);
return 0; return 0;
} }
@ -612,12 +611,12 @@ int Awk::Return::set (const char_t* ptr, size_t len)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->run != QSE_NULL);
qse_awk_val_t* x = qse_awk_rtx_makestrval (this->run->run, ptr, len); qse_awk_val_t* x = qse_awk_rtx_makestrval (this->run->rtx, ptr, len);
if (x == QSE_NULL) return -1; if (x == QSE_NULL) return -1;
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = x; this->val = x;
qse_awk_rtx_refupval (this->run->run, this->val); qse_awk_rtx_refupval (this->run->rtx, this->val);
return 0; return 0;
} }
@ -641,47 +640,47 @@ int Awk::Return::setIndexed (const char_t* idx, size_t iln, long_t v)
if (this->val->type != QSE_AWK_VAL_MAP) if (this->val->type != QSE_AWK_VAL_MAP)
{ {
qse_awk_val_t* x = qse_awk_rtx_makemapval (this->run->run); qse_awk_val_t* x = qse_awk_rtx_makemapval (this->run->rtx);
if (x == QSE_NULL) return -1; if (x == QSE_NULL) return -1;
qse_awk_rtx_refupval (this->run->run, x); qse_awk_rtx_refupval (this->run->rtx, x);
qse_awk_val_t* x2 = qse_awk_rtx_makeintval (this->run->run, v); qse_awk_val_t* x2 = qse_awk_rtx_makeintval (this->run->rtx, v);
if (x2 == QSE_NULL) if (x2 == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x); qse_awk_rtx_refdownval (this->run->rtx, x);
return -1; return -1;
} }
qse_awk_rtx_refupval (this->run->run, x2); qse_awk_rtx_refupval (this->run->rtx, x2);
pair_t* pair = qse_map_upsert ( pair_t* pair = qse_map_upsert (
((qse_awk_val_map_t*)x)->map, ((qse_awk_val_map_t*)x)->map,
(char_t*)idx, iln, x2, 0); (char_t*)idx, iln, x2, 0);
if (pair == QSE_NULL) if (pair == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x2); qse_awk_rtx_refdownval (this->run->rtx, x2);
qse_awk_rtx_refdownval (this->run->run, x); qse_awk_rtx_refdownval (this->run->rtx, x);
this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0);
return -1; return -1;
} }
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = x; this->val = x;
} }
else else
{ {
qse_awk_val_t* x2 = qse_awk_rtx_makeintval (this->run->run, v); qse_awk_val_t* x2 = qse_awk_rtx_makeintval (this->run->rtx, v);
if (x2 == QSE_NULL) return -1; if (x2 == QSE_NULL) return -1;
qse_awk_rtx_refupval (this->run->run, x2); qse_awk_rtx_refupval (this->run->rtx, x2);
pair_t* pair = qse_map_upsert ( pair_t* pair = qse_map_upsert (
((qse_awk_val_map_t*)this->val)->map, ((qse_awk_val_map_t*)this->val)->map,
(char_t*)idx, iln, x2, 0); (char_t*)idx, iln, x2, 0);
if (pair == QSE_NULL) if (pair == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x2); qse_awk_rtx_refdownval (this->run->rtx, x2);
this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0);
return -1; return -1;
} }
@ -704,47 +703,47 @@ int Awk::Return::setIndexed (const char_t* idx, size_t iln, real_t v)
if (this->val->type != QSE_AWK_VAL_MAP) if (this->val->type != QSE_AWK_VAL_MAP)
{ {
qse_awk_val_t* x = qse_awk_rtx_makemapval (this->run->run); qse_awk_val_t* x = qse_awk_rtx_makemapval (this->run->rtx);
if (x == QSE_NULL) return -1; if (x == QSE_NULL) return -1;
qse_awk_rtx_refupval (this->run->run, x); qse_awk_rtx_refupval (this->run->rtx, x);
qse_awk_val_t* x2 = qse_awk_rtx_makerealval (this->run->run, v); qse_awk_val_t* x2 = qse_awk_rtx_makerealval (this->run->rtx, v);
if (x2 == QSE_NULL) if (x2 == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x); qse_awk_rtx_refdownval (this->run->rtx, x);
return -1; return -1;
} }
qse_awk_rtx_refupval (this->run->run, x2); qse_awk_rtx_refupval (this->run->rtx, x2);
pair_t* pair = qse_map_upsert ( pair_t* pair = qse_map_upsert (
((qse_awk_val_map_t*)x)->map, ((qse_awk_val_map_t*)x)->map,
(char_t*)idx, iln, x2, 0); (char_t*)idx, iln, x2, 0);
if (pair == QSE_NULL) if (pair == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x2); qse_awk_rtx_refdownval (this->run->rtx, x2);
qse_awk_rtx_refdownval (this->run->run, x); qse_awk_rtx_refdownval (this->run->rtx, x);
this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0);
return -1; return -1;
} }
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = x; this->val = x;
} }
else else
{ {
qse_awk_val_t* x2 = qse_awk_rtx_makerealval (this->run->run, v); qse_awk_val_t* x2 = qse_awk_rtx_makerealval (this->run->rtx, v);
if (x2 == QSE_NULL) return -1; if (x2 == QSE_NULL) return -1;
qse_awk_rtx_refupval (this->run->run, x2); qse_awk_rtx_refupval (this->run->rtx, x2);
pair_t* pair = qse_map_upsert ( pair_t* pair = qse_map_upsert (
((qse_awk_val_map_t*)this->val)->map, ((qse_awk_val_map_t*)this->val)->map,
(char_t*)idx, iln, x2, 0); (char_t*)idx, iln, x2, 0);
if (pair == QSE_NULL) if (pair == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x2); qse_awk_rtx_refdownval (this->run->rtx, x2);
this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0);
return -1; return -1;
} }
@ -767,47 +766,47 @@ int Awk::Return::setIndexed (const char_t* idx, size_t iln, const char_t* str, s
if (this->val->type != QSE_AWK_VAL_MAP) if (this->val->type != QSE_AWK_VAL_MAP)
{ {
qse_awk_val_t* x = qse_awk_rtx_makemapval (this->run->run); qse_awk_val_t* x = qse_awk_rtx_makemapval (this->run->rtx);
if (x == QSE_NULL) return -1; if (x == QSE_NULL) return -1;
qse_awk_rtx_refupval (this->run->run, x); qse_awk_rtx_refupval (this->run->rtx, x);
qse_awk_val_t* x2 = qse_awk_rtx_makestrval (this->run->run, str, sln); qse_awk_val_t* x2 = qse_awk_rtx_makestrval (this->run->rtx, str, sln);
if (x2 == QSE_NULL) if (x2 == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x); qse_awk_rtx_refdownval (this->run->rtx, x);
return -1; return -1;
} }
qse_awk_rtx_refupval (this->run->run, x2); qse_awk_rtx_refupval (this->run->rtx, x2);
pair_t* pair = qse_map_upsert ( pair_t* pair = qse_map_upsert (
((qse_awk_val_map_t*)x)->map, ((qse_awk_val_map_t*)x)->map,
(char_t*)idx, iln, x2, 0); (char_t*)idx, iln, x2, 0);
if (pair == QSE_NULL) if (pair == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x2); qse_awk_rtx_refdownval (this->run->rtx, x2);
qse_awk_rtx_refdownval (this->run->run, x); qse_awk_rtx_refdownval (this->run->rtx, x);
this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0);
return -1; return -1;
} }
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = x; this->val = x;
} }
else else
{ {
qse_awk_val_t* x2 = qse_awk_rtx_makestrval (this->run->run, str, sln); qse_awk_val_t* x2 = qse_awk_rtx_makestrval (this->run->rtx, str, sln);
if (x2 == QSE_NULL) return -1; if (x2 == QSE_NULL) return -1;
qse_awk_rtx_refupval (this->run->run, x2); qse_awk_rtx_refupval (this->run->rtx, x2);
pair_t* pair = qse_map_upsert ( pair_t* pair = qse_map_upsert (
((qse_awk_val_map_t*)this->val)->map, ((qse_awk_val_map_t*)this->val)->map,
(char_t*)idx, iln, x2, 0); (char_t*)idx, iln, x2, 0);
if (pair == QSE_NULL) if (pair == QSE_NULL)
{ {
qse_awk_rtx_refdownval (this->run->run, x2); qse_awk_rtx_refdownval (this->run->rtx, x2);
this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0);
return -1; return -1;
} }
@ -902,7 +901,7 @@ int Awk::Return::setIndexed (long_t idx, const char_t* str, size_t sln)
void Awk::Return::clear () void Awk::Return::clear ()
{ {
qse_awk_rtx_refdownval (this->run->run, this->val); qse_awk_rtx_refdownval (this->run->rtx, this->val);
this->val = qse_awk_val_nil; this->val = qse_awk_val_nil;
} }
@ -910,13 +909,13 @@ void Awk::Return::clear ()
// Awk::Run // Awk::Run
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
Awk::Run::Run (Awk* awk): awk (awk), run (QSE_NULL) Awk::Run::Run (Awk* awk): awk (awk), rtx (QSE_NULL)
{ {
} }
Awk::Run::Run (Awk* awk, rtx_t* run): awk (awk), run (run), data (QSE_NULL) Awk::Run::Run (Awk* awk, rtx_t* rtx): awk (awk), rtx (rtx), data (QSE_NULL)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
} }
Awk::Run::~Run () Awk::Run::~Run ()
@ -930,70 +929,70 @@ Awk::Run::operator Awk* () const
Awk::Run::operator Awk::rtx_t* () const Awk::Run::operator Awk::rtx_t* () const
{ {
return this->run; return this->rtx;
} }
void Awk::Run::stop () const void Awk::Run::stop () const
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_awk_rtx_stop (this->run); qse_awk_rtx_stop (this->rtx);
} }
bool Awk::Run::isStop () const bool Awk::Run::isStop () const
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
return qse_awk_rtx_shouldstop (this->run)? true: false; return qse_awk_rtx_shouldstop (this->rtx)? true: false;
} }
Awk::ErrorNumber Awk::Run::getErrorNumber () const Awk::ErrorNumber Awk::Run::getErrorNumber () const
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
return (ErrorNumber)qse_awk_rtx_geterrnum (this->run); return (ErrorNumber)qse_awk_rtx_geterrnum (this->rtx);
} }
Awk::size_t Awk::Run::getErrorLine () const Awk::size_t Awk::Run::getErrorLine () const
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
return qse_awk_rtx_geterrlin (this->run); return qse_awk_rtx_geterrlin (this->rtx);
} }
const Awk::char_t* Awk::Run::getErrorMessage () const const Awk::char_t* Awk::Run::getErrorMessage () const
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
return qse_awk_rtx_geterrmsg (this->run); return qse_awk_rtx_geterrmsg (this->rtx);
} }
void Awk::Run::setError (ErrorNumber code) void Awk::Run::setError (ErrorNumber code)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_awk_rtx_seterror (this->run, (errnum_t)code, 0, QSE_NULL); qse_awk_rtx_seterror (this->rtx, (errnum_t)code, 0, QSE_NULL);
} }
void Awk::Run::setError (ErrorNumber code, size_t line) void Awk::Run::setError (ErrorNumber code, size_t line)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_awk_rtx_seterror (this->run, (errnum_t)code, line, QSE_NULL); qse_awk_rtx_seterror (this->rtx, (errnum_t)code, line, QSE_NULL);
} }
void Awk::Run::setError (ErrorNumber code, size_t line, const char_t* arg) void Awk::Run::setError (ErrorNumber code, size_t line, const char_t* arg)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_cstr_t x = { arg, qse_strlen(arg) }; qse_cstr_t x = { arg, qse_strlen(arg) };
qse_awk_rtx_seterror (this->run, (errnum_t)code, line, &x); qse_awk_rtx_seterror (this->rtx, (errnum_t)code, line, &x);
} }
void Awk::Run::setError ( void Awk::Run::setError (
ErrorNumber code, size_t line, const char_t* arg, size_t len) ErrorNumber code, size_t line, const char_t* arg, size_t len)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_cstr_t x = { arg, len }; qse_cstr_t x = { arg, len };
qse_awk_rtx_seterror (this->run, (errnum_t)code, line, &x); qse_awk_rtx_seterror (this->rtx, (errnum_t)code, line, &x);
} }
void Awk::Run::setErrorWithMessage ( void Awk::Run::setErrorWithMessage (
ErrorNumber code, size_t line, const char_t* msg) ErrorNumber code, size_t line, const char_t* msg)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_awk_errinf_t errinf; qse_awk_errinf_t errinf;
@ -1001,61 +1000,61 @@ void Awk::Run::setErrorWithMessage (
errinf.lin = line; errinf.lin = line;
qse_strxcpy (errinf.msg, QSE_COUNTOF(errinf.msg), msg); qse_strxcpy (errinf.msg, QSE_COUNTOF(errinf.msg), msg);
qse_awk_rtx_seterrinf (this->run, &errinf); qse_awk_rtx_seterrinf (this->rtx, &errinf);
} }
int Awk::Run::setGlobal (int id, long_t v) int Awk::Run::setGlobal (int id, long_t v)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_awk_val_t* tmp = qse_awk_rtx_makeintval (run, v); qse_awk_val_t* tmp = qse_awk_rtx_makeintval (this->rtx, v);
if (tmp == QSE_NULL) return -1; if (tmp == QSE_NULL) return -1;
qse_awk_rtx_refupval (run, tmp); qse_awk_rtx_refupval (this->rtx, tmp);
int n = qse_awk_rtx_setgbl (this->run, id, tmp); int n = qse_awk_rtx_setgbl (this->rtx, id, tmp);
qse_awk_rtx_refdownval (run, tmp); qse_awk_rtx_refdownval (this->rtx, tmp);
return n; return n;
} }
int Awk::Run::setGlobal (int id, real_t v) int Awk::Run::setGlobal (int id, real_t v)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_awk_val_t* tmp = qse_awk_rtx_makerealval (run, v); qse_awk_val_t* tmp = qse_awk_rtx_makerealval (this->rtx, v);
if (tmp == QSE_NULL) return -1; if (tmp == QSE_NULL) return -1;
qse_awk_rtx_refupval (run, tmp); qse_awk_rtx_refupval (this->rtx, tmp);
int n = qse_awk_rtx_setgbl (this->run, id, tmp); int n = qse_awk_rtx_setgbl (this->rtx, id, tmp);
qse_awk_rtx_refdownval (run, tmp); qse_awk_rtx_refdownval (this->rtx, tmp);
return n; return n;
} }
int Awk::Run::setGlobal (int id, const char_t* ptr, size_t len) int Awk::Run::setGlobal (int id, const char_t* ptr, size_t len)
{ {
QSE_ASSERT (run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
qse_awk_val_t* tmp = qse_awk_rtx_makestrval (run, ptr, len); qse_awk_val_t* tmp = qse_awk_rtx_makestrval (this->rtx, ptr, len);
if (tmp == QSE_NULL) return -1; if (tmp == QSE_NULL) return -1;
qse_awk_rtx_refupval (run, tmp); qse_awk_rtx_refupval (this->rtx, tmp);
int n = qse_awk_rtx_setgbl (this->run, id, tmp); int n = qse_awk_rtx_setgbl (this->rtx, id, tmp);
qse_awk_rtx_refdownval (run, tmp); qse_awk_rtx_refdownval (this->rtx, tmp);
return n; return n;
} }
int Awk::Run::setGlobal (int id, const Return& gbl) int Awk::Run::setGlobal (int id, const Return& gbl)
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
return qse_awk_rtx_setgbl (this->run, id, gbl.toVal()); return qse_awk_rtx_setgbl (this->rtx, id, gbl.toVal());
} }
int Awk::Run::getGlobal (int id, Argument& gbl) const int Awk::Run::getGlobal (int id, Argument& gbl) const
{ {
QSE_ASSERT (this->run != QSE_NULL); QSE_ASSERT (this->rtx != QSE_NULL);
gbl.clear (); gbl.clear ();
return gbl.init (qse_awk_rtx_getgbl(this->run,id)); return gbl.init (qse_awk_rtx_getgbl (this->rtx, id));
} }
void Awk::Run::setData (void* data) void Awk::Run::setData (void* data)
@ -1385,7 +1384,7 @@ int Awk::loop ()
} }
else else
{ {
runctx.run = rtx; runctx.rtx = rtx;
rxtn_t* rxtn = (rxtn_t*) QSE_XTN (rtx); rxtn_t* rxtn = (rxtn_t*) QSE_XTN (rtx);
rxtn->run = &runctx; rxtn->run = &runctx;
@ -1422,7 +1421,7 @@ int Awk::dispatchFunction (Run* run, const char_t* name, size_t len)
FunctionHandler handler; FunctionHandler handler;
handler = *(FunctionHandler*)QSE_MAP_VPTR(pair); handler = *(FunctionHandler*)QSE_MAP_VPTR(pair);
size_t i, nargs = qse_awk_rtx_getnargs(run->run); size_t i, nargs = qse_awk_rtx_getnargs(run->rtx);
//Argument* args = QSE_NULL; //Argument* args = QSE_NULL;
//try { args = new Argument [nargs]; } catch (...) {} //try { args = new Argument [nargs]; } catch (...) {}
@ -1438,7 +1437,7 @@ int Awk::dispatchFunction (Run* run, const char_t* name, size_t len)
args[i].run = run; // dirty late initialization args[i].run = run; // dirty late initialization
// due to c++ array creation limitation. // due to c++ array creation limitation.
val_t* v = qse_awk_rtx_getarg (run->run, i); val_t* v = qse_awk_rtx_getarg (run->rtx, i);
if (args[i].init (v) == -1) if (args[i].init (v) == -1)
{ {
run->setError (ERR_NOMEM, 0, QSE_NULL, 0); run->setError (ERR_NOMEM, 0, QSE_NULL, 0);
@ -1460,7 +1459,7 @@ int Awk::dispatchFunction (Run* run, const char_t* name, size_t len)
return -1; return -1;
} }
qse_awk_rtx_setretval (run->run, ret); qse_awk_rtx_setretval (run->rtx, ret);
return 0; return 0;
} }
@ -1663,7 +1662,7 @@ Awk::ssize_t Awk::pipeHandler (
QSE_ASSERT ((riod->type & 0xFF) == QSE_AWK_RIO_PIPE); QSE_ASSERT ((riod->type & 0xFF) == QSE_AWK_RIO_PIPE);
Pipe pipe (rtx, riod); Pipe pipe (rxtn->run, riod);
switch (cmd) switch (cmd)
{ {
@ -1696,7 +1695,7 @@ Awk::ssize_t Awk::fileHandler (
QSE_ASSERT ((riod->type & 0xFF) == QSE_AWK_RIO_FILE); QSE_ASSERT ((riod->type & 0xFF) == QSE_AWK_RIO_FILE);
File file (rtx, riod); File file (rxtn->run, riod);
switch (cmd) switch (cmd)
{ {
@ -1729,7 +1728,7 @@ Awk::ssize_t Awk::consoleHandler (
QSE_ASSERT ((riod->type & 0xFF) == QSE_AWK_RIO_CONSOLE); QSE_ASSERT ((riod->type & 0xFF) == QSE_AWK_RIO_CONSOLE);
Console console (rtx, riod); Console console (rxtn->run, riod);
switch (cmd) switch (cmd)
{ {
@ -1764,26 +1763,26 @@ void Awk::freeFunctionMapValue (map_t* map, void* dptr, size_t dlen)
qse_awk_free (awk->awk, dptr); qse_awk_free (awk->awk, dptr);
} }
int Awk::onLoopEnter (rtx_t* run, void* data) int Awk::onLoopEnter (rtx_t* rtx, void* data)
{ {
Run* r = (Run*)data; Run* run = (Run*)data;
return r->awk->onLoopEnter(*r)? 0: -1; return run->awk->onLoopEnter(*run)? 0: -1;
} }
void Awk::onLoopExit (rtx_t* run, val_t* ret, void* data) void Awk::onLoopExit (rtx_t* rtx, val_t* ret, void* data)
{ {
Run* r = (Run*)data; Run* run = (Run*)data;
Argument x (r); Argument x (run);
if (x.init (ret) == -1) if (x.init (ret) == -1)
qse_awk_rtx_seterrnum (r->run, (errnum_t)ERR_NOMEM); qse_awk_rtx_seterrnum (run->rtx, (errnum_t)ERR_NOMEM);
else r->awk->onLoopExit (*r, x); else run->awk->onLoopExit (*run, x);
} }
void Awk::onStatement (rtx_t* run, size_t line, void* data) void Awk::onStatement (rtx_t* rtx, size_t line, void* data)
{ {
Run* r = (Run*)data; Run* run = (Run*)data;
r->awk->onStatement (*r, line); run->awk->onStatement (*run, line);
} }
Awk::real_t Awk::pow (awk_t* awk, real_t x, real_t y) Awk::real_t Awk::pow (awk_t* awk, real_t x, real_t y)