added code to the Sed class

This commit is contained in:
2009-05-26 07:39:18 +00:00
parent 2a4dd14b2a
commit b010320498
5 changed files with 136 additions and 26 deletions

View File

@ -48,14 +48,64 @@ void Sed::close () throw()
}
}
int Sed::compile () throw ()
int Sed::compile (const char_t* sptr, size_t slen) throw ()
{
return 0;
QSE_ASSERT (sed != QSE_NULL);
return qse_sed_comp (sed, sptr, slen);
}
int Sed::execute () throw ()
{
return 0;
QSE_ASSERT (sed != QSE_NULL);
return qse_sed_exec (sed, xin, xout);
}
int Sed::xin (sed_t* s, sed_io_cmd_t cmd, sed_io_arg_t* arg)
{
Sed* sed = *(Sed**)QSE_XTN(s);
try
{
switch (cmd)
{
case QSE_SED_IO_OPEN:
return sed->openIn (arg->open.path);
case QSE_SED_IO_CLOSE:
return sed->closeIn ();
case QSE_SED_IO_READ:
return sed->readIn (arg->read.buf, arg->read.len);
default:
return -1;
}
}
catch (...)
{
return -1;
}
}
int Sed::xout (sed_t* s, sed_io_cmd_t cmd, sed_io_arg_t* arg)
{
Sed* sed = *(Sed**)QSE_XTN(s);
try
{
switch (cmd)
{
case QSE_SED_IO_OPEN:
return sed->openOut (arg->open.path);
case QSE_SED_IO_CLOSE:
return sed->closeOut ();
case QSE_SED_IO_READ:
return sed->writeOut (arg->write.data, arg->write.len);
default:
return -1;
}
}
catch (...)
{
return -1;
}
}
/////////////////////////////////