[BACK]Return to main.cpp CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_ntl

File: [local] / OpenXM / src / ox_ntl / main.cpp (download)

Revision 1.3, Sat Nov 15 09:06:20 2003 UTC (20 years, 6 months ago) by iwane
Branch: MAIN
Changes since 1.2: +23 -11 lines

block interrupt input.

add ox_ntl command "lll"
e.g.
[1081] M=newmat(2,2,[[10,0],[-7,3]]);
[ 10 0 ]
[ -7 3 ]
[1082] ntl.lll(PID, M);
[ 3 3 ]
[ 4 -6 ]

add local cmo-object

/* $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.3 $"

#if 0
extern "C" {
void dprintf(const char *, ...);
}
#endif


static void
ntl_executeFunction(const char *func, cmo **arg, int 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 ;
		}
	}

	oxstack_push((cmo *)new_cmo_error2((cmo *)new_cmo_string("Unknown Function")));
}



int
main(int argc, char *argv[])
{
	int fd = 3;
	int ret;

	OXFILE *oxfp;

	oxfp = oxf_open(fd);

	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);

	ret = oxserv_receive(oxfp);

	oxserv_dest();
	oxf_close(oxfp);

	return (0);
}