| version 1.4, 1999/12/15 08:04:50 |
version 1.6, 1999/12/22 11:29:15 |
|
|
| # Author: ¾®¸¶¸ùǤ @ ¶âÂôÂç³ØÍý³ØÉô·×»»²Ê³Ø¶µ¼¼ |
# Author: ¾®¸¶¸ùǤ @ ¶âÂôÂç³ØÍý³ØÉô·×»»²Ê³Ø¶µ¼¼ |
| # URI: http://omega.s.kanazawa-u.ac.jp/ohara/ |
# URI: http://omega.s.kanazawa-u.ac.jp/ohara/ |
| # $OpenXM: OpenXM/src/ox_toolkit/README,v 1.3 1999/12/15 02:44:12 ohara Exp $ |
# $OpenXM: OpenXM/src/ox_toolkit/README,v 1.5 1999/12/15 09:24:46 ohara Exp $ |
| |
|
| /*&ja ox_toolkit ¥æ¡¼¥¶¥¬¥¤¥É |
/*&ja ox_toolkit ¥æ¡¼¥¶¥¬¥¤¥É |
| |
|
| */ |
*/ |
| /*&en A user's guide for ox_toolkit. |
/*&en A user's guide for OpenXM C library. |
| |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| Line 14 libox.a ¤òÍøÍѤ¹¤ë¤Ë¤Ï¼¡¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É |
|
| Line 14 libox.a ¤òÍøÍѤ¹¤ë¤Ë¤Ï¼¡¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É |
|
| /*&en |
/*&en |
| How to use OpenXM C library? |
How to use OpenXM C library? |
| |
|
| The OpenXM C libraiy has header files: |
In order to use libox.a, you need to include the following header files: |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| Line 35 The OpenXM C libraiy has header files: |
|
| Line 35 The OpenXM C libraiy has header files: |
|
| 1. Types |
1. Types |
| |
|
| 1.1 CMO (Common Math Object) |
1.1 CMO (Common Math Object) |
| The following structures is defined in ox.h: |
The following structures are defined in ox.h: |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
|
|
| |
|
| */ |
*/ |
| /*&en |
/*&en |
| The cmo above is similer to abstract base class; |
The cmo above is abstract base class; |
| you never make an object of cmo class. |
you never make an object of cmo class. |
| |
|
| */ |
*/ |
| Line 75 you never make an object of cmo class. |
|
| Line 75 you never make an object of cmo class. |
|
| */ |
*/ |
| /*&en |
/*&en |
| 1.2 OX objects |
1.2 OX objects |
| The following structures is defined in ox.h: |
The following structures are defined in ox.h: |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| Line 101 The ox above is abstract base class. |
|
| Line 101 The ox above is abstract base class. |
|
| /*&en |
/*&en |
| 2. How to make CMObjects? |
2. How to make CMObjects? |
| |
|
| You may use new functions which generate an object and return its pointer. |
Use the following functions to generate an object. |
| |
It returns a pointer to the object. |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| Line 136 new_cmo_error2(cmo* ob); |
|
| Line 137 new_cmo_error2(cmo* ob); |
|
| /*&en |
/*&en |
| 3. High-level API |
3. High-level API |
| |
|
| High-level API is prepared for implementation of your OpenXM clients. |
High-level API is prepared to help an implementation of OpenXM clients. |
| |
|
| 3.1 How to make connection to OpenXM server? |
3.1 How to make connections to OpenXM servers? |
| |
|
| You may call ox_start or ox_start_insecure_nonreverse. |
In order to open a connection to an OpenXM server, |
| |
you need to call ox_start() or to call ox_start_insecure_nonreverse(). |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| Line 172 portStream ¤Ï·×»»¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤Î¤¿¤á¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¢¤ |
|
| Line 174 portStream ¤Ï·×»»¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤Î¤¿¤á¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¢¤ |
|
| |
|
| */ |
*/ |
| /*&en |
/*&en |
| 3.2 How to close connection to OpenXM server? |
3.2 How to close connections to OpenXM servers? |
| |
|
| You may call ox_close or ox_shutdown. |
In order to close a connection to an OpenXM server, |
| |
you need to call ox_close() or to call ox_shutdown(). |
| |
|
| */ |
*/ |
| /*&common |
/*&common |
| Line 190 void ox_shutdown(ox_file_t sv); |
|
| Line 193 void ox_shutdown(ox_file_t sv); |
|
| /* |
/* |
| /*&ja |
/*&ja |
| 3.3 SM ¥³¥Þ¥ó¥É¤ÎÁ÷¿® |
3.3 SM ¥³¥Þ¥ó¥É¤ÎÁ÷¿® |
| |
|
| */ |
*/ |
| /*&en |
/*&en |
| 3.3 How to command to OpenXM stack machine? |
3.3 How to command to OpenXM stack machines? |
| |
|
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| void ox_push_cmd(ox_file_t sv, int sm_code); |
void ox_push_cmd(ox_file_t sv, int sm_code); |
| |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| ¥µ¡¼¥Ð¤Ë¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¥³¥Þ¥ó¥É¤òÁ÷¤ë¡£¥³¥Þ¥ó¥É¤Ï¥³¥Þ¥ó¥ÉÈÖ¹æ¤ÇÍ¿¤¨¤ë¡£ |
¥µ¡¼¥Ð¤Ë¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¥³¥Þ¥ó¥É¤òÁ÷¤ë¡£¥³¥Þ¥ó¥É¤Ï¥³¥Þ¥ó¥ÉÈÖ¹æ¤ÇÍ¿¤¨¤ë¡£ |
| |
|
| */ |
*/ |
| /*&en |
/*&en |
| This function send operation code to an OpenXM stack machine. |
ox_push_cmd() sends an operation code to an OpenXM stack machine. |
| Table of opecode is defined in oxtag.h. |
See oxtag.h. |
| */ |
*/ |
| /*&ja |
/*&ja |
| |
|
| 3.4 CMO ¤ÎÁ÷¼õ¿® |
3.4 CMO ¤ÎÁ÷¼õ¿® |
| |
|
| void ox_push_cmo(ox_file_t sv, cmo *c); |
void ox_push_cmo(ox_file_t sv, cmo *c); |
| Line 245 void ox_execute_string(ox_file_t sv, char* str); |
|
| Line 247 void ox_execute_string(ox_file_t sv, char* str); |
|
| |
|
| 3.9 |
3.9 |
| |
|
| int ox_cmo_rpc(ox_file_t sv, char *function, int argc, cmo *argv[]); |
int ox_cmo_rpc(ox_file_t sv, char *function, int argc, cmo *argv[]); |
| |
|
| function(argv[1], ...) ¤ò·×»»¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
function(argv[1], ...) ¤ò·×»»¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
| |
|
| Line 255 cmo_mathcap* ox_mathcap(ox_file_t sv); |
|
| Line 257 cmo_mathcap* ox_mathcap(ox_file_t sv); |
|
| |
|
| Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ËǤ¤µ¤ì¤Æ¤¤¤ë¡£ |
Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ËǤ¤µ¤ì¤Æ¤¤¤ë¡£ |
| ¤¤¤º¤ì¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤ëͽÄê¡£ |
¤¤¤º¤ì¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤ëͽÄê¡£ |
| |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| |
|
| 4. Äã¿å½à API |
4. Äã¿å½à API |
| |
|
| Äã¿å½à API ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òľÀÜÍøÍѤ¹¤ë¡£ |
Äã¿å½à API ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òľÀÜÍøÍѤ¹¤ë¡£ |
| |
|
| 4.1 ÄÌ¿®¤Ë»È¤ï¤ì¤ë¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê |
4.1 ÄÌ¿®¤Ë»È¤ï¤ì¤ë¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê |
| |
|
| */ |
*/ |
| /*&en |
/*&en |
| |
|
| 4. Low-level API. |
4. Low-level API. |
| |
|
| 4.1 How to decide a byte order of integers? |
In this section, ``fd'' is an identifier of an OpenXM connection. |
| |
|
| |
4.1 How to decide a byte order of integers? |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| int decideByteOrderServer(int fd, int order); |
int decideByteOrderServer(int fd, int order); |
| |
|
| */ |
*/ |
| Line 281 int decideByteOrderServer(int fd, int order); |
|
| Line 285 int decideByteOrderServer(int fd, int order); |
|
| ¤¤¤ë¡£¾Ü¤·¤¯¤Ï¡¢¹â»³-ÌîϤ, "OpenXM ¤ÎÀ߷פȼÂÁõ" ¤ò»²¾È¤»¤è¡£ |
¤¤¤ë¡£¾Ü¤·¤¯¤Ï¡¢¹â»³-ÌîϤ, "OpenXM ¤ÎÀ߷פȼÂÁõ" ¤ò»²¾È¤»¤è¡£ |
| |
|
| (Ãí°Õ) ¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤Î¥Ð¥¤¥È¥ª¡¼¥À¤ÎÀßÄê¤Ï¡¢¹â¿å½à API ¤Ç¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤ë¡£ |
(Ãí°Õ) ¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤Î¥Ð¥¤¥È¥ª¡¼¥À¤ÎÀßÄê¤Ï¡¢¹â¿å½à API ¤Ç¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤ë¡£ |
| |
|
| */ |
*/ |
| |
/*&en |
| |
You need to call it when your OpenXM server is initialized. |
| |
This function always choose the network byte order |
| |
as an expression for integers. |
| |
*/ |
| /*&common |
/*&common |
| |
|
| 4.2 |
4.2 |
| |
|
| int send_int32(int fd, int integer); |
int send_int32(int fd, int integer); |
| |
|
| */ |
|
| /*&ja |
|
| fd ¤Ë 32bit À°¿ô¤ò½ñ¤¹þ¤à¡£ |
|
| |
|
| */ |
|
| /*&common |
|
| int receive_int32(int fd); |
int receive_int32(int fd); |
| |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| |
fd ¤Ë 32bit À°¿ô¤ò½ñ¤¹þ¤à¡£ |
| fd ¤«¤é 32bit À°¿ô¤òÆÉ¤ß¹þ¤à¡£ |
fd ¤«¤é 32bit À°¿ô¤òÆÉ¤ß¹þ¤à¡£ |
| |
|
| */ |
*/ |
| |
/*&en |
| |
send_int32() writes 32bits integer to an OpenXM connection. |
| |
receive_int32() reads 32bits integer from an OpenXM connection. |
| |
*/ |
| /*&common |
/*&common |
| |
|
| 4.3 |
4.3 |
| |
|
| int send_cmo(int fd, cmo* m); |
int send_cmo(int fd, cmo* m); |
| |
cmo* receive_cmo(int fd); |
| |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| fd ¤Ë cmo ¤ò½ñ¤¹þ¤à¡£ |
fd ¤Ë cmo ¤ò½ñ¤¹þ¤à¡£ |
| |
fd ¤«¤é cmo ¤òÆÉ¤ß¹þ¤à¡£ |
| */ |
*/ |
| |
/*&en |
| |
send_cmo() writes an CMObject to an OpenXM connection. |
| |
receive_cmo() reads an CMObject from an OpenXM connection. |
| |
*/ |
| /*&common |
/*&common |
| cmo* receive_cmo(int fd); |
|
| |
|
| */ |
|
| /*&ja |
|
| fd ¤«¤é cmo ¤òÆÉ¤ß¹þ¤à¡£ |
|
| |
|
| 4.4 |
4.4 |
| |
|
| int next_serial(); |
int next_serial(); |
| |
|
| |
*/ |
| |
/*&ja |
| ¥·¥ê¥¢¥ë¥Ê¥ó¥Ð¤òÀ¸À®¤¹¤ë¡£ |
¥·¥ê¥¢¥ë¥Ê¥ó¥Ð¤òÀ¸À®¤¹¤ë¡£ |
| |
*/ |
| |
/*&en |
| |
next_serial() generates a serial number for ox message. |
| |
*/ |
| |
/*&common |
| |
|
| 4.5 |
4.5 |
| |
|
| int send_ox_tag(int fd, int tag); |
int send_ox_tag(int fd, int tag); |
| |
|
| fd ¤Ë OX ¥á¥Ã¥»¡¼¥¸¤Î¥Ø¥Ã¥À(tag+id)¤ò½ñ¤¹þ¤à¡£ |
|
| ¥·¥ê¥¢¥ëÈÖ¹æ¤Ï¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤ë¡£ |
|
| |
|
| int receive_ox_tag(int fd); |
int receive_ox_tag(int fd); |
| |
|
| fd ¤«¤é OX ¥á¥Ã¥»¡¼¥¸¤Î¥Ø¥Ã¥À(tag+id)¤òÆÉ¤ß¹þ¤à¡£ |
*/ |
| |
/*&ja |
| |
fd ¤Ë OX ¥á¥Ã¥»¡¼¥¸¤Î¥Ø¥Ã¥À(tag+serial#)¤ò½ñ¤¹þ¤à¡£¥·¥ê¥¢¥ëÈÖ¹æ¤Ï |
| |
¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤ë¡£ |
| |
fd ¤«¤é OX ¥á¥Ã¥»¡¼¥¸¤Î¥Ø¥Ã¥À(tag+serial#)¤òÆÉ¤ß¹þ¤à¡£ |
| |
*/ |
| |
/*&en |
| |
send_ox_tag() writes a tag and an automatically generated serial number |
| |
of an ox message to an OpenXM conection. |
| |
receive_ox_tag() reads a tag and a serial number of an ox message. |
| |
*/ |
| |
/*&common |
| |
|
| 4.6 |
4.6 |
| |
|
| Line 341 int send_ox(int fd, ox* m); |
|
| Line 362 int send_ox(int fd, ox* m); |
|
| int send_ox_cmo(int fd, cmo* m); |
int send_ox_cmo(int fd, cmo* m); |
| void send_ox_command(int fd, int sm_command); |
void send_ox_command(int fd, int sm_command); |
| |
|
| |
*/ |
| |
/*&ja |
| ox ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£ |
ox ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£ |
| */ |
|
| |
|
| |
*/ |
| |
|
| |
/*&ja |
| |
|
| |
5. OX expression ¥Ñ¡¼¥µ |
| |
|
| |
OpenXM C library ¤Ë¤Ï ʸ»úÎóɽ¸½¤µ¤ì¤¿ |
| |
OX expression ¤ª¤è¤Ó CMO expression ¤«¤é¡¢ |
| |
ox ¹½Â¤ÂΤޤ¿¤Ï cmo ¹½Â¤ÂΤòÀ¸À®¤¹¤ë¤¿¤á¤Î¥Ñ¡¼¥µ¤¬ÉÕ°¤·¤Æ¤¤¤ë¡£ |
| |
|
| |
¤³¤³¤Ç¤Ï¤³¤Î¥Ñ¡¼¥µ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£ |
| |
|
| |
int setflag_parse(int flag); |
| |
|
| |
setflag_parse(PFLAG_ADDREV) ¤Ë¤è¤Ã¤Æ¡¢CMO ¤Îû½Ìɽ¸½¤òµö¤¹¡£ |
| |
|
| |
int init_parser(char *str); |
| |
|
| |
¥Ñ¡¼¥µ¤¬½èÍý¤¹¤Ù¤Ê¸»úÎó¤ò¥»¥Ã¥È¤¹¤ë¡£ |
| |
|
| |
cmo *parse(); |
| |
|
| |
Lisp ɽ¸½¤Ë¤è¤ë OX expression, CMO expression ¤Î¹½Ê¸²òÀÏ´ï¡£¤¢¤é¤«¤¸¤á |
| |
ÀßÄꤵ¤ì¤¿Ê¸»úÎó¤ò²òÀϤ·¤Æ ox ¹½Â¤ÂΡ¢¤¢¤ë¤¤¤Ï cmo ¹½Â¤ÂΤòÀ¸À®¤¹¤ë¡£ |
| |
*/ |
| |
/*&ja |
| |
|
| |
7. ÉÕ°¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ |
| |
|
| |
testclient |
| |
|
| |
¥Æ¥¹¥ÈÍѤµ¤Ê OpenXM ¥¯¥é¥¤¥¢¥ó¥È¡£OX expression ¤òÆþÎϤ·¤ÆÁ÷¿®¤¹¤ë |
| |
¤³¤È¤Î¤ß²Äǽ¡£SM_popCMO, SM_popString ¤ò´Þ¤à¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤·¤¿¾ì¹ç¤Ë |
| |
¤Ï¡¢¥µ¡¼¥Ð¤«¤éÁ÷¤é¤ì¤Æ¤¯¤ë¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë¡£ |
| |
|
| |
bconv |
| |
|
| |
¥Ð¥¤¥È¥³¡¼¥É¥¨¥ó¥³¡¼¥À¡£OX expression ¤¢¤ë¤¤¤Ï CMO expression ¤òÆþÎϤ¹ |
| |
¤ë¤È¡¢Âбþ¤¹¤ë¥Ð¥¤¥ÈÎó¤òɽ¼¨¤¹¤ë¡£ |
| |
|
| |
ox_Xsample |
| |
|
| |
GUI ɽ¼¨¤¹¤ë OpenXM ¥µ¡¼¥Ð¤Î¥µ¥ó¥×¥ë¡£ |
| |
|
| |
*/ |