touched up code and documentation
This commit is contained in:
@ -19,9 +19,6 @@
|
||||
#include <qse/sed/Sed.hpp>
|
||||
#include "sed.h"
|
||||
|
||||
#include <qse/utl/stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/////////////////////////////////
|
||||
QSE_BEGIN_NAMESPACE(QSE)
|
||||
/////////////////////////////////
|
||||
@ -66,55 +63,126 @@ int Sed::execute () throw ()
|
||||
return qse_sed_exec (sed, xin, xout);
|
||||
}
|
||||
|
||||
int Sed::xin (sed_t* s, sed_io_cmd_t cmd, sed_io_arg_t* arg)
|
||||
const Sed::char_t* Sed::getErrorMessage () const
|
||||
{
|
||||
return (sed == QSE_NULL)? QSE_T(""): qse_sed_geterrmsg (sed);
|
||||
}
|
||||
|
||||
Sed::size_t Sed::getErrorLine () const
|
||||
{
|
||||
return (sed == QSE_NULL)? 0: qse_sed_geterrlin (sed);
|
||||
}
|
||||
|
||||
int Sed::getErrorNumber () const
|
||||
{
|
||||
return (sed == QSE_NULL)? 0: qse_sed_geterrnum (sed);
|
||||
}
|
||||
|
||||
Sed::ssize_t Sed::xin (sed_t* s, sed_io_cmd_t cmd, sed_io_arg_t* arg) throw ()
|
||||
{
|
||||
Sed* sed = *(Sed**)QSE_XTN(s);
|
||||
IO io (arg);
|
||||
|
||||
try
|
||||
if (arg->path == QSE_NULL)
|
||||
{
|
||||
switch (cmd)
|
||||
Console io (arg, Console::READ);
|
||||
|
||||
try
|
||||
{
|
||||
case QSE_SED_IO_OPEN:
|
||||
return sed->openInput (io);
|
||||
case QSE_SED_IO_CLOSE:
|
||||
return sed->closeInput (io);
|
||||
case QSE_SED_IO_READ:
|
||||
return sed->readInput (
|
||||
io, arg->u.r.buf, arg->u.w.len);
|
||||
default:
|
||||
return -1;
|
||||
switch (cmd)
|
||||
{
|
||||
case QSE_SED_IO_OPEN:
|
||||
return sed->openConsole (io);
|
||||
case QSE_SED_IO_CLOSE:
|
||||
return sed->closeConsole (io);
|
||||
case QSE_SED_IO_READ:
|
||||
return sed->readConsole (
|
||||
io, arg->u.r.buf, arg->u.r.len);
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
File io (arg, File::READ);
|
||||
|
||||
try
|
||||
{
|
||||
switch (cmd)
|
||||
{
|
||||
case QSE_SED_IO_OPEN:
|
||||
return sed->openFile (io);
|
||||
case QSE_SED_IO_CLOSE:
|
||||
return sed->closeFile (io);
|
||||
case QSE_SED_IO_READ:
|
||||
return sed->readFile (
|
||||
io, arg->u.r.buf, arg->u.r.len);
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Sed::xout (sed_t* s, sed_io_cmd_t cmd, sed_io_arg_t* arg)
|
||||
Sed::ssize_t Sed::xout (sed_t* s, sed_io_cmd_t cmd, sed_io_arg_t* arg) throw ()
|
||||
{
|
||||
Sed* sed = *(Sed**)QSE_XTN(s);
|
||||
IO io (arg);
|
||||
|
||||
try
|
||||
if (arg->path == QSE_NULL)
|
||||
{
|
||||
switch (cmd)
|
||||
Console io (arg, Console::WRITE);
|
||||
|
||||
try
|
||||
{
|
||||
case QSE_SED_IO_OPEN:
|
||||
return sed->openOutput (io);
|
||||
case QSE_SED_IO_CLOSE:
|
||||
return sed->closeOutput (io);
|
||||
case QSE_SED_IO_READ:
|
||||
return sed->writeOutput (
|
||||
io, arg->u.w.data, arg->u.w.len);
|
||||
default:
|
||||
return -1;
|
||||
switch (cmd)
|
||||
{
|
||||
case QSE_SED_IO_OPEN:
|
||||
return sed->openConsole (io);
|
||||
case QSE_SED_IO_CLOSE:
|
||||
return sed->closeConsole (io);
|
||||
case QSE_SED_IO_WRITE:
|
||||
return sed->writeConsole (
|
||||
io, arg->u.w.data, arg->u.w.len);
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
File io (arg, File::WRITE);
|
||||
|
||||
try
|
||||
{
|
||||
switch (cmd)
|
||||
{
|
||||
case QSE_SED_IO_OPEN:
|
||||
return sed->openFile (io);
|
||||
case QSE_SED_IO_CLOSE:
|
||||
return sed->closeFile (io);
|
||||
case QSE_SED_IO_WRITE:
|
||||
return sed->writeFile (
|
||||
io, arg->u.w.data, arg->u.w.len);
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,81 +40,58 @@ void StdSed::freeMem (void* ptr) throw ()
|
||||
::free (ptr);
|
||||
}
|
||||
|
||||
int StdSed::openInput (IO& io)
|
||||
int StdSed::openConsole (Console& io)
|
||||
{
|
||||
int flags;
|
||||
const qse_char_t* path = io.getPath ();
|
||||
|
||||
if (path == QSE_NULL) io.setHandle (qse_sio_in);
|
||||
else
|
||||
{
|
||||
qse_fio_t* fio;
|
||||
fio = qse_fio_open (
|
||||
this, 0, path,
|
||||
QSE_FIO_READ | QSE_FIO_TEXT,
|
||||
QSE_FIO_RUSR | QSE_FIO_WUSR |
|
||||
QSE_FIO_RGRP | QSE_FIO_ROTH
|
||||
);
|
||||
if (fio == NULL) return -1;
|
||||
|
||||
io.setHandle (fio);
|
||||
}
|
||||
|
||||
io.setHandle ((io.getMode() == Console::READ)? qse_sio_in: qse_sio_out);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int StdSed::closeInput (IO& io)
|
||||
int StdSed::closeConsole (Console& io)
|
||||
{
|
||||
if (io.getPath() != QSE_NULL)
|
||||
qse_fio_close ((qse_fio_t*)io.getHandle());
|
||||
return 0;
|
||||
}
|
||||
|
||||
ssize_t StdSed::readInput (IO& io, char_t* buf, size_t len)
|
||||
StdSed::ssize_t StdSed::readConsole (Console& io, char_t* buf, size_t len)
|
||||
{
|
||||
if (io.getPath() == QSE_NULL)
|
||||
return qse_sio_getsn ((qse_sio_t*)io.getHandle(), buf, len);
|
||||
else
|
||||
return qse_fio_read ((qse_fio_t*)io.getHandle(), buf, len);
|
||||
return qse_sio_getsn ((qse_sio_t*)io.getHandle(), buf, len);
|
||||
}
|
||||
|
||||
int StdSed::openOutput (IO& io)
|
||||
StdSed::ssize_t StdSed::writeConsole (Console& io, const char_t* data, size_t len)
|
||||
{
|
||||
int flags;
|
||||
const qse_char_t* path = io.getPath ();
|
||||
return qse_sio_putsn ((qse_sio_t*)io.getHandle(), data, len);
|
||||
}
|
||||
|
||||
if (path == QSE_NULL) io.setHandle (qse_sio_out);
|
||||
else
|
||||
{
|
||||
qse_fio_t* fio;
|
||||
fio = qse_fio_open (
|
||||
this, 0, path,
|
||||
QSE_FIO_WRITE | QSE_FIO_CREATE |
|
||||
QSE_FIO_TRUNCATE | QSE_FIO_TEXT,
|
||||
QSE_FIO_RUSR | QSE_FIO_WUSR |
|
||||
QSE_FIO_RGRP | QSE_FIO_ROTH
|
||||
);
|
||||
if (fio == NULL) return -1;
|
||||
int StdSed::openFile (File& io)
|
||||
{
|
||||
int flags = (io.getMode() == File::READ)?
|
||||
QSE_FIO_READ: (QSE_FIO_WRITE|QSE_FIO_CREATE|QSE_FIO_TRUNCATE);
|
||||
|
||||
io.setHandle (fio);
|
||||
}
|
||||
qse_fio_t* fio = qse_fio_open (
|
||||
this, 0, io.getName(),
|
||||
flags | QSE_FIO_TEXT,
|
||||
QSE_FIO_RUSR | QSE_FIO_WUSR |
|
||||
QSE_FIO_RGRP | QSE_FIO_ROTH
|
||||
);
|
||||
if (fio == QSE_NULL) return -1;
|
||||
|
||||
io.setHandle (fio);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int StdSed::closeOutput (IO& io)
|
||||
int StdSed::closeFile (File& io)
|
||||
{
|
||||
if (io.getPath() != QSE_NULL)
|
||||
qse_fio_close ((qse_fio_t*)io.getHandle());
|
||||
qse_fio_close ((qse_fio_t*)io.getHandle());
|
||||
return 0;
|
||||
}
|
||||
|
||||
ssize_t StdSed::writeOutput (IO& io, const char_t* data, size_t len)
|
||||
StdSed::ssize_t StdSed::readFile (File& io, char_t* buf, size_t len)
|
||||
{
|
||||
if (io.getPath() == QSE_NULL)
|
||||
return qse_sio_putsn ((qse_sio_t*)io.getHandle(), data, len);
|
||||
else
|
||||
return qse_fio_write ((qse_fio_t*)io.getHandle(), data, len);
|
||||
return qse_fio_read ((qse_fio_t*)io.getHandle(), buf, len);
|
||||
}
|
||||
|
||||
StdSed::ssize_t StdSed::writeFile (File& io, const char_t* data, size_t len)
|
||||
{
|
||||
return qse_fio_write ((qse_fio_t*)io.getHandle(), data, len);
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
|
Reference in New Issue
Block a user