Recovered from cvs revision 2007-05-18 05:50:00
This commit is contained in:
parent
a4d7743175
commit
314b089f0d
163
ase/awk/Awk.cpp
163
ase/awk/Awk.cpp
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Awk.cpp,v 1.30 2007/05/16 07:13:32 bacon Exp $
|
* $Id: Awk.cpp,v 1.31 2007/05/17 15:02:54 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ase/awk/Awk.hpp>
|
#include <ase/awk/Awk.hpp>
|
||||||
@ -400,7 +400,9 @@ namespace ASE
|
|||||||
//////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Awk::Awk (): awk (ASE_NULL), functionMap (ASE_NULL),
|
Awk::Awk (): awk (ASE_NULL), functionMap (ASE_NULL),
|
||||||
sourceIn (Source::READ), sourceOut (Source::WRITE)
|
sourceIn (Source::READ), sourceOut (Source::WRITE),
|
||||||
|
errnum (E_NOERR), errlin (0)
|
||||||
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,6 +410,97 @@ namespace ASE
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Awk::ErrorCode Awk::getErrorCode ()
|
||||||
|
{
|
||||||
|
return this->errnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
Awk::size_t Awk::getErrorLine ()
|
||||||
|
{
|
||||||
|
return this->errlin;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Awk::setError (ErrorCode code, size_t line)
|
||||||
|
{
|
||||||
|
this->errnum = code;
|
||||||
|
this->errlin = line;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Awk::clearError ()
|
||||||
|
{
|
||||||
|
this->errnum = E_NOERR;
|
||||||
|
this->errlin = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Awk::open ()
|
||||||
|
{
|
||||||
|
ASE_ASSERT (awk == ASE_NULL && functionMap == ASE_NULL);
|
||||||
|
|
||||||
|
ase_awk_prmfns_t prmfns;
|
||||||
|
|
||||||
|
prmfns.mmgr.malloc = allocMem;
|
||||||
|
prmfns.mmgr.realloc = reallocMem;
|
||||||
|
prmfns.mmgr.free = freeMem;
|
||||||
|
prmfns.mmgr.custom_data = this;
|
||||||
|
|
||||||
|
prmfns.ccls.is_upper = isUpper;
|
||||||
|
prmfns.ccls.is_lower = isLower;
|
||||||
|
prmfns.ccls.is_alpha = isAlpha;
|
||||||
|
prmfns.ccls.is_digit = isDigit;
|
||||||
|
prmfns.ccls.is_xdigit = isXdigit;
|
||||||
|
prmfns.ccls.is_alnum = isAlnum;
|
||||||
|
prmfns.ccls.is_space = isSpace;
|
||||||
|
prmfns.ccls.is_print = isPrint;
|
||||||
|
prmfns.ccls.is_graph = isGraph;
|
||||||
|
prmfns.ccls.is_cntrl = isCntrl;
|
||||||
|
prmfns.ccls.is_punct = isPunct;
|
||||||
|
prmfns.ccls.to_upper = toUpper;
|
||||||
|
prmfns.ccls.to_lower = toLower;
|
||||||
|
prmfns.ccls.custom_data = this;
|
||||||
|
|
||||||
|
prmfns.misc.pow = pow;
|
||||||
|
prmfns.misc.sprintf = sprintf;
|
||||||
|
prmfns.misc.dprintf = dprintf;
|
||||||
|
prmfns.misc.custom_data = this;
|
||||||
|
|
||||||
|
awk = ase_awk_open (&prmfns, this);
|
||||||
|
if (awk == ASE_NULL)
|
||||||
|
{
|
||||||
|
setError (E_NOMEM);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
functionMap = ase_awk_map_open (
|
||||||
|
this, 512, freeFunctionMapValue, awk);
|
||||||
|
if (functionMap == ASE_NULL)
|
||||||
|
{
|
||||||
|
ase_awk_close (awk);
|
||||||
|
awk = ASE_NULL;
|
||||||
|
|
||||||
|
setError (E_NOMEM);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Awk::close ()
|
||||||
|
{
|
||||||
|
if (functionMap != ASE_NULL)
|
||||||
|
{
|
||||||
|
ase_awk_map_close (functionMap);
|
||||||
|
functionMap = ASE_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (awk != ASE_NULL)
|
||||||
|
{
|
||||||
|
ase_awk_close (awk);
|
||||||
|
awk = ASE_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
clearError ();
|
||||||
|
}
|
||||||
|
|
||||||
int Awk::parse ()
|
int Awk::parse ()
|
||||||
{
|
{
|
||||||
ASE_ASSERT (awk != ASE_NULL);
|
ASE_ASSERT (awk != ASE_NULL);
|
||||||
@ -491,72 +584,6 @@ namespace ASE
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Awk::open ()
|
|
||||||
{
|
|
||||||
ASE_ASSERT (awk == ASE_NULL && functionMap == ASE_NULL);
|
|
||||||
|
|
||||||
ase_awk_prmfns_t prmfns;
|
|
||||||
|
|
||||||
prmfns.mmgr.malloc = allocMem;
|
|
||||||
prmfns.mmgr.realloc = reallocMem;
|
|
||||||
prmfns.mmgr.free = freeMem;
|
|
||||||
prmfns.mmgr.custom_data = this;
|
|
||||||
|
|
||||||
prmfns.ccls.is_upper = isUpper;
|
|
||||||
prmfns.ccls.is_lower = isLower;
|
|
||||||
prmfns.ccls.is_alpha = isAlpha;
|
|
||||||
prmfns.ccls.is_digit = isDigit;
|
|
||||||
prmfns.ccls.is_xdigit = isXdigit;
|
|
||||||
prmfns.ccls.is_alnum = isAlnum;
|
|
||||||
prmfns.ccls.is_space = isSpace;
|
|
||||||
prmfns.ccls.is_print = isPrint;
|
|
||||||
prmfns.ccls.is_graph = isGraph;
|
|
||||||
prmfns.ccls.is_cntrl = isCntrl;
|
|
||||||
prmfns.ccls.is_punct = isPunct;
|
|
||||||
prmfns.ccls.to_upper = toUpper;
|
|
||||||
prmfns.ccls.to_lower = toLower;
|
|
||||||
prmfns.ccls.custom_data = this;
|
|
||||||
|
|
||||||
prmfns.misc.pow = pow;
|
|
||||||
prmfns.misc.sprintf = sprintf;
|
|
||||||
prmfns.misc.dprintf = dprintf;
|
|
||||||
prmfns.misc.custom_data = this;
|
|
||||||
|
|
||||||
awk = ase_awk_open (&prmfns, this);
|
|
||||||
if (awk == ASE_NULL)
|
|
||||||
{
|
|
||||||
// TODO: SET ERROR INFO
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
functionMap = ase_awk_map_open (
|
|
||||||
this, 512, freeFunctionMapValue, awk);
|
|
||||||
if (functionMap == ASE_NULL)
|
|
||||||
{
|
|
||||||
// TODO: set ERROR INFO -> ENOMEM...
|
|
||||||
ase_awk_close (awk);
|
|
||||||
awk = ASE_NULL;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Awk::close ()
|
|
||||||
{
|
|
||||||
if (functionMap != ASE_NULL)
|
|
||||||
{
|
|
||||||
ase_awk_map_close (functionMap);
|
|
||||||
functionMap = ASE_NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (awk != ASE_NULL)
|
|
||||||
{
|
|
||||||
ase_awk_close (awk);
|
|
||||||
awk = ASE_NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int Awk::dispatchFunction (
|
int Awk::dispatchFunction (
|
||||||
run_t* run, const char_t* name, size_t len)
|
run_t* run, const char_t* name, size_t len)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Awk.hpp,v 1.28 2007/05/16 07:13:32 bacon Exp $
|
* $Id: Awk.hpp,v 1.29 2007/05/17 15:02:54 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _ASE_AWK_AWK_HPP_
|
#ifndef _ASE_AWK_AWK_HPP_
|
||||||
@ -222,9 +222,23 @@ namespace ASE
|
|||||||
run_t* run;
|
run_t* run;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ErrorCode
|
||||||
|
{
|
||||||
|
E_NOERR = ASE_AWK_ENOERR,
|
||||||
|
E_NOMEM = ASE_AWK_ENOMEM
|
||||||
|
};
|
||||||
|
|
||||||
Awk ();
|
Awk ();
|
||||||
virtual ~Awk ();
|
virtual ~Awk ();
|
||||||
|
|
||||||
|
ErrorCode getErrorCode ();
|
||||||
|
size_t getErrorLine ();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void setError (ErrorCode code, size_t line = 0);
|
||||||
|
void clearError ();
|
||||||
|
|
||||||
|
public:
|
||||||
virtual int open ();
|
virtual int open ();
|
||||||
virtual void close ();
|
virtual void close ();
|
||||||
|
|
||||||
@ -351,6 +365,9 @@ namespace ASE
|
|||||||
Source sourceIn;
|
Source sourceIn;
|
||||||
Source sourceOut;
|
Source sourceOut;
|
||||||
|
|
||||||
|
ErrorCode errnum;
|
||||||
|
size_t errlin;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Awk (const Awk&);
|
Awk (const Awk&);
|
||||||
Awk& operator= (const Awk&);
|
Awk& operator= (const Awk&);
|
||||||
|
Loading…
Reference in New Issue
Block a user