=================================================================== RCS file: /home/cvs/OpenXM/src/ox_ntl/main.cpp,v retrieving revision 1.1 retrieving revision 1.4 diff -u -p -r1.1 -r1.4 --- OpenXM/src/ox_ntl/main.cpp 2003/11/03 03:11:21 1.1 +++ OpenXM/src/ox_ntl/main.cpp 2003/11/17 12:04:20 1.4 @@ -1,26 +1,37 @@ -/* $OpenXM$ */ +/* $OpenXM: OpenXM/src/ox_ntl/main.cpp,v 1.3 2003/11/15 09:06:20 iwane Exp $ */ #include "ox_toolkit.h" #include "oxserv.h" +#include "oxstack.h" #include "ntl.h" #define VERSION 0x00000001 -#define ID_STRING "$Revision: 1.1 $" +#define ID_STRING "$Revision: 1.4 $" -#if 1 -extern "C" { -void dprintf(const char *, ...); -} -#endif - -static cmo * +static void ntl_executeFunction(const char *func, cmo **arg, int argc) { - if (strcmp(func, "fctr") == 0) { - return (ntl_fctr(arg, argc)); + cmo *ans; + int i; + + struct { + const char *name; + cmo *(*func)(cmo **, int); + } funcs[] = { + {"fctr", ntl_fctr}, + {"lll", ntl_lll}, + {NULL, NULL}, + }; + + for (i = 0; funcs[i].name != NULL; i++) { + if (strcmp(func, funcs[i].name) == 0) { + ans = funcs[i].func(arg, argc); + oxstack_push(ans); + return ; + } } - return (NULL); + oxstack_push((cmo *)new_cmo_error2((cmo *)new_cmo_string("Unknown Function"))); } @@ -29,7 +40,6 @@ int main(int argc, char *argv[]) { int fd = 3; - int i; int ret; OXFILE *oxfp; @@ -39,13 +49,12 @@ main(int argc, char *argv[]) ox_stderr_init(stderr); oxserv_set(OXSERV_SET_EXECUTE_FUNCTION, ntl_executeFunction, NULL); + oxserv_set(OXSERV_SET_DELETE_CMO, delete_cmon, NULL); + oxserv_set(OXSERV_SET_GET_CMOTAG, get_cmon_tag, NULL); + oxserv_set(OXSERV_SET_CONVERT_CMO, convert_cmon, NULL); oxserv_init(oxfp, VERSION, ID_STRING, "ox_ntl", NULL, NULL); - for (i = 0;; i++) { - ret = oxserv_receive(oxfp); - if (ret != OXSERV_SUCCESS) - break; - } + ret = oxserv_receive(oxfp); oxserv_dest(); oxf_close(oxfp);