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