| version 1.6, 1999/12/22 11:29:15 |
version 1.10, 2000/03/10 12:24:38 |
|
|
| # 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.5 1999/12/15 09:24:46 ohara Exp $ |
# $OpenXM: OpenXM/src/ox_toolkit/README,v 1.9 2000/01/20 17:18:55 ohara Exp $ |
| |
|
| /*&ja ox_toolkit ¥æ¡¼¥¶¥¬¥¤¥É |
/*&ja ox_toolkit ¥æ¡¼¥¶¥¬¥¤¥É |
| |
|
|
|
| /*&en A user's guide for OpenXM C library. |
/*&en A user's guide for OpenXM C library. |
| |
|
| */ |
*/ |
| |
/* &ja ¤¤¤¤µ¤Ä |
| |
¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ï ox_math ¤ª¤è¤Ó math2ox ¤ò³«È¯¤¹¤ë¤¿¤á¤ËÀ߷פµ¤ì¤¿¡£ |
| |
¥é¥¤¥Ö¥é¥ê¼«¿È¤Ë¤Ï¡¢ Mathematica ¤Ë°Í¸¤·¤¿Éôʬ¤Ï¤Ê¤¤¡£ |
| |
*/ |
| |
/* &en Introduction |
| |
|
| |
*/ |
| /*&ja |
/*&ja |
| libox.a ¤òÍøÍѤ¹¤ë¤Ë¤Ï¼¡¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ |
libox.a ¤òÍøÍѤ¹¤ë¤Ë¤Ï¼¡¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ |
| */ |
*/ |
| Line 18 In order to use libox.a, you need to include the follo |
|
| Line 25 In order to use libox.a, you need to include the follo |
|
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| #include <oxtag.h> |
#include <ox_toolkit.h> |
| #include <ox.h> |
|
| #include <parse.h> |
|
| |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| Line 35 In order to use libox.a, you need to include the follo |
|
| Line 40 In order to use libox.a, you need to include the follo |
|
| 1. Types |
1. Types |
| |
|
| 1.1 CMO (Common Math Object) |
1.1 CMO (Common Math Object) |
| The following structures are defined in ox.h: |
The following structures are defined in ox_toolkit.h: |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
|
|
| |
|
| */ |
*/ |
| /*&en |
/*&en |
| The cmo above is abstract base class; |
The cmo above is abstract base class; you never make an object of cmo |
| you never make an object of cmo class. |
class. |
| |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| Line 75 you never make an object of cmo class. |
|
| Line 80 you never make an object of cmo class. |
|
| */ |
*/ |
| /*&en |
/*&en |
| 1.2 OX objects |
1.2 OX objects |
| The following structures are defined in ox.h: |
The following structures are defined in ox_toolkit.h: |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| Line 101 The ox above is abstract base class. |
|
| Line 106 The ox above is abstract base class. |
|
| /*&en |
/*&en |
| 2. How to make CMObjects? |
2. How to make CMObjects? |
| |
|
| Use the following functions to generate an object. |
Use the following functions to generate an object. It returns a |
| It returns a pointer to the object. |
pointer to the object. */ /*&common |
| */ |
|
| /*&common |
|
| |
|
| new_cmo_null(); |
new_cmo_null(); |
| new_cmo_int32(int i); |
new_cmo_int32(int i); |
| Line 141 High-level API is prepared to help an implementation o |
|
| Line 144 High-level API is prepared to help an implementation o |
|
| |
|
| 3.1 How to make connections to OpenXM servers? |
3.1 How to make connections to OpenXM servers? |
| |
|
| In order to open a connection to an OpenXM server, |
In order to open a connection to an OpenXM server, you need to call |
| you need to call ox_start() or to call ox_start_insecure_nonreverse(). |
ox_start() or to call ox_start_insecure_nonreverse(). |
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| Line 167 portStream ¤Ï·×»»¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤Î¤¿¤á¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¢¤ |
|
| Line 170 portStream ¤Ï·×»»¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤Î¤¿¤á¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¢¤ |
|
| ¤³¤Î¼±Ê̻ҤϹâ¿å½à API ¤Î³Æ´Ø¿ô¤ÇÍøÍѤµ¤ì¤ë¡£ |
¤³¤Î¼±Ê̻ҤϹâ¿å½à API ¤Î³Æ´Ø¿ô¤ÇÍøÍѤµ¤ì¤ë¡£ |
| |
|
| */ |
*/ |
| |
/*&en |
| |
The ox_start() function invoke an OpenXM server on its local machine |
| |
and open a connection to the server with "reverse" mode. The client |
| |
choose a port number of TCP/IP automatically. |
| |
|
| |
The ox_start_insecure_nonreverse() function open a connection to an |
| |
OpenXM server run on a remote host and you need to provide port numbers. |
| |
|
| |
*/ |
| /*&ja |
/*&ja |
| 3.2 ÄÌ¿®¤Î½ªÎ» |
3.2 ÄÌ¿®¤Î½ªÎ» |
| |
|
| Line 176 portStream ¤Ï·×»»¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤Î¤¿¤á¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¢¤ |
|
| Line 188 portStream ¤Ï·×»»¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤Î¤¿¤á¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¢¤ |
|
| /*&en |
/*&en |
| 3.2 How to close connections to OpenXM servers? |
3.2 How to close connections to OpenXM servers? |
| |
|
| In order to close a connection to an OpenXM server, |
In order to close a connection to an OpenXM server, you need to call |
| you need to call ox_close() or to call ox_shutdown(). |
ox_close() or to call ox_shutdown(). |
| |
|
| */ |
*/ |
| /*&common |
/*&common |
| Line 190 void ox_shutdown(ox_file_t sv); |
|
| Line 202 void ox_shutdown(ox_file_t sv); |
|
| ¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë¡£ÂèÆó¤Î´Ø¿ô¤Ï·×»»¥µ¡¼¥Ð¤Ë SM_shutdown ¤òÁ÷¤ë¤³¤È¤Ë |
¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë¡£ÂèÆó¤Î´Ø¿ô¤Ï·×»»¥µ¡¼¥Ð¤Ë SM_shutdown ¤òÁ÷¤ë¤³¤È¤Ë |
| ¤è¤Ã¤Æ¡¢¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë(ͽÄê)¡£ |
¤è¤Ã¤Æ¡¢¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë(ͽÄê)¡£ |
| |
|
| /* |
*/ |
| /*&ja |
/*&ja |
| 3.3 SM ¥³¥Þ¥ó¥É¤ÎÁ÷¿® |
3.3 SM ¥³¥Þ¥ó¥É¤ÎÁ÷¿® |
| */ |
*/ |
| Line 204 void ox_push_cmd(ox_file_t sv, int sm_code); |
|
| Line 216 void ox_push_cmd(ox_file_t sv, int sm_code); |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| ¥µ¡¼¥Ð¤Ë¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¥³¥Þ¥ó¥É¤òÁ÷¤ë¡£¥³¥Þ¥ó¥É¤Ï¥³¥Þ¥ó¥ÉÈÖ¹æ¤ÇÍ¿¤¨¤ë¡£ |
¥µ¡¼¥Ð¤Ë¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¥³¥Þ¥ó¥É¤òÁ÷¤ë¡£¥³¥Þ¥ó¥É¤Ï¥³¥Þ¥ó¥ÉÈÖ¹æ¤ÇÍ¿¤¨¤ë¡£ |
| |
|
| */ |
*/ |
| /*&en |
/*&en |
| ox_push_cmd() sends an operation code to an OpenXM stack machine. |
ox_push_cmd() sends an operation code to an OpenXM stack machine. |
| See oxtag.h. |
See OpenXM/include/ox_toolkit_tags.h for a list of operation codes. |
| |
|
| */ |
*/ |
| /*&ja |
/*&ja |
| |
|
| 3.4 CMO ¤ÎÁ÷¼õ¿® |
3.4 CMO ¤ÎÁ÷¼õ¿® |
| |
*/ |
| |
/*&en |
| |
3.4 How to receive a CMO? |
| |
*/ |
| |
/*&common |
| |
|
| void ox_push_cmo(ox_file_t sv, cmo *c); |
void ox_push_cmo(ox_file_t sv, cmo *c); |
| cmo* ox_pop_cmo(ox_file_t sv); |
cmo* ox_pop_cmo(ox_file_t sv); |
| char* ox_popString(ox_file_t sv); |
char* ox_popString(ox_file_t sv); |
| |
|
| |
*/ |
| |
/*&ja |
| ox_push_cmo ¤Ï cmo ¤òÁ÷¿®¡¢ox_pop_cmo ¤Ï cmo ¤ò¼õ¿®¤¹¤ë¡£ox_popString |
ox_push_cmo ¤Ï cmo ¤òÁ÷¿®¡¢ox_pop_cmo ¤Ï cmo ¤ò¼õ¿®¤¹¤ë¡£ox_popString |
| ¤Ï cmo ¤òʸ»úÎó·Á¼°¤ËÊÑ´¹¤·¤Æ¼õ¿®¤¹¤ë¤¬¡¢ÊÑ´¹¤Î·ë²Ì¤Ï¥µ¡¼¥Ð¤Ë¤è¤Ã¤Æ°Û |
¤Ï cmo ¤òʸ»úÎó·Á¼°¤ËÊÑ´¹¤·¤Æ¼õ¿®¤¹¤ë¤¬¡¢ÊÑ´¹¤Î·ë²Ì¤Ï¥µ¡¼¥Ð¤Ë¤è¤Ã¤Æ°Û |
| ¤Ê¤ë¡£ |
¤Ê¤ë¡£ |
| |
|
| |
*/ |
| |
/*&en |
| |
*/ |
| |
/*&ja |
| 3.5 ¥¹¥¿¥Ã¥¯½èÍý |
3.5 ¥¹¥¿¥Ã¥¯½èÍý |
| |
*/ |
| |
/*&common |
| |
|
| int ox_pops(ox_file_t sv, int num); |
int ox_pops(ox_file_t sv, int num); |
| |
|
| |
*/ |
| |
/*&ja |
| ¥¹¥¿¥Ã¥¯¾å¤Î num ¸Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÇÑ´þ¤¹¤ë¡£ |
¥¹¥¿¥Ã¥¯¾å¤Î num ¸Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÇÑ´þ¤¹¤ë¡£ |
| |
|
| 3.6 |
*/ |
| |
/*&ja |
| |
3.6 ÄÌ¿®Ï©¤Î¥Õ¥é¥Ã¥·¥å |
| |
*/ |
| |
/*&common |
| |
|
| int ox_flush(ox_file_t sv); |
int ox_flush(ox_file_t sv); |
| |
|
| |
*/ |
| |
/*&ja |
| ÄÌ¿®Ï©¤ò flush ¤¹¤ë(¼ÂºÝ¤Ë¤Ï²¿¤â¤·¤Ê¤¤)¡£ |
ÄÌ¿®Ï©¤ò flush ¤¹¤ë(¼ÂºÝ¤Ë¤Ï²¿¤â¤·¤Ê¤¤)¡£ |
| |
|
| 3.7 |
*/ |
| |
/*&ja |
| |
3.7 ÄÌ¿®¤ÎÃæÃÇ |
| |
*/ |
| |
/*&common |
| |
|
| void ox_reset(ox_file_t sv); |
void ox_reset(ox_file_t sv); |
| |
|
| |
*/ |
| |
/*&ja |
| ·×»»¤òÃæÃǤ¹¤ë¡£ |
·×»»¤òÃæÃǤ¹¤ë¡£ |
| |
|
| 3.8 |
*/ |
| |
/*&ja |
| |
3.8 ¥í¡¼¥«¥ë¸À¸ì¤Ç½ñ¤«¤ì¤¿¥³¥Þ¥ó¥É¤Îɾ²Á |
| |
*/ |
| |
/*&common |
| |
|
| void ox_execute_string(ox_file_t sv, char* str); |
void ox_execute_string(ox_file_t sv, char* str); |
| |
|
| |
*/ |
| |
/*&ja |
| ¥µ¡¼¥Ð¤Î¥í¡¼¥«¥ë¸À¸ì¤Ç½ñ¤«¤ì¤¿Ì¿Îá¤òɾ²Á¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
¥µ¡¼¥Ð¤Î¥í¡¼¥«¥ë¸À¸ì¤Ç½ñ¤«¤ì¤¿Ì¿Îá¤òɾ²Á¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
| |
|
| 3.9 |
*/ |
| |
/*&ja |
| |
3.9 ´Ø¿ô¸Æ¤Ó½Ð¤· |
| |
*/ |
| |
/*&common |
| |
|
| 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[]); |
| |
|
| |
*/ |
| |
/*&ja |
| function(argv[1], ...) ¤ò·×»»¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
function(argv[1], ...) ¤ò·×»»¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
| |
|
| 3.10 |
*/ |
| |
/*&ja |
| |
3.10 Mathcap ¤Î¼õ¿® |
| |
|
| |
*/ |
| |
/*&common |
| cmo_mathcap* ox_mathcap(ox_file_t sv); |
cmo_mathcap* ox_mathcap(ox_file_t sv); |
| |
|
| |
*/ |
| |
/*&ja |
| Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ËǤ¤µ¤ì¤Æ¤¤¤ë¡£ |
Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ËǤ¤µ¤ì¤Æ¤¤¤ë¡£ |
| ¤¤¤º¤ì¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤ëͽÄê¡£ |
¤¤¤º¤ì¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤ëͽÄê¡£ |
| */ |
*/ |
| Line 273 Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥ |
|
| Line 331 Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥ |
|
| In this section, ``fd'' is an identifier of an OpenXM connection. |
In this section, ``fd'' is an identifier of an OpenXM connection. |
| |
|
| 4.1 How to decide a byte order of integers? |
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 295 as an expression for integers. |
|
| Line 353 as an expression for integers. |
|
| |
|
| 4.2 |
4.2 |
| |
|
| |
*/ |
| |
/*&common |
| int send_int32(int fd, int integer); |
int send_int32(int fd, int integer); |
| int receive_int32(int fd); |
int receive_int32(int fd); |
| |
|
| Line 311 receive_int32() reads 32bits integer from an OpenXM co |
|
| Line 371 receive_int32() reads 32bits integer from an OpenXM co |
|
| |
|
| 4.3 |
4.3 |
| |
|
| |
*/ |
| |
/*&common |
| int send_cmo(int fd, cmo* m); |
int send_cmo(int fd, cmo* m); |
| cmo* receive_cmo(int fd); |
cmo* receive_cmo(int fd); |
| |
|
| Line 327 receive_cmo() reads an CMObject from an OpenXM connect |
|
| Line 389 receive_cmo() reads an CMObject from an OpenXM connect |
|
| |
|
| 4.4 |
4.4 |
| |
|
| |
*/ |
| |
/*&common |
| int next_serial(); |
int next_serial(); |
| |
|
| */ |
*/ |
| Line 340 next_serial() generates a serial number for ox message |
|
| Line 404 next_serial() generates a serial number for ox message |
|
| |
|
| 4.5 |
4.5 |
| |
|
| |
*/ |
| |
/*&common |
| int send_ox_tag(int fd, int tag); |
int send_ox_tag(int fd, int tag); |
| int receive_ox_tag(int fd); |
int receive_ox_tag(int fd); |
| |
|
| Line 356 receive_ox_tag() reads a tag and a serial number of an |
|
| Line 422 receive_ox_tag() reads a tag and a serial number of an |
|
| */ |
*/ |
| /*&common |
/*&common |
| |
|
| 4.6 |
4.6 Sending OX messages. |
| |
|
| |
*/ |
| |
/*&common |
| int send_ox(int fd, ox* m); |
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 |
/*&ja |
| ox ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£ |
OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£ |
| */ |
*/ |
| |
|
| /*&ja |
/*&ja |
| |
|
| 5. OX expression ¥Ñ¡¼¥µ |
5. OX expression ¥Ñ¡¼¥µ |
| |
|
| OpenXM C library ¤Ë¤Ï ʸ»úÎóɽ¸½¤µ¤ì¤¿ |
*/ |
| OX expression ¤ª¤è¤Ó CMO expression ¤«¤é¡¢ |
/*&en |
| ox ¹½Â¤ÂΤޤ¿¤Ï cmo ¹½Â¤ÂΤòÀ¸À®¤¹¤ë¤¿¤á¤Î¥Ñ¡¼¥µ¤¬ÉÕ°¤·¤Æ¤¤¤ë¡£ |
|
| |
|
| ¤³¤³¤Ç¤Ï¤³¤Î¥Ñ¡¼¥µ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£ |
5. Parser for OX expressions |
| |
|
| |
*/ |
| |
/*&ja |
| |
OpenXM C library ¤Ë¤Ï ʸ»úÎóɽ¸½¤µ¤ì¤¿ OX expression ¤ª¤è¤Ó CMO |
| |
expression ¤«¤é¡¢ox ¹½Â¤ÂΤޤ¿¤Ï cmo ¹½Â¤ÂΤòÀ¸À®¤¹¤ë¤¿¤á¤Î¥Ñ¡¼¥µ¤¬ÉÕ |
| |
°¤·¤Æ¤¤¤ë¡£¤³¤³¤Ç¤Ï¤³¤Î¥Ñ¡¼¥µ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£ |
| |
*/ |
| |
/*&en |
| |
We have a parser which generate an OX object or a CMO from a string |
| |
encoded OX/CMO expression. In this section, we explain the parser. |
| |
*/ |
| |
/*&en |
| |
|
| |
5.1 Setting an option |
| |
*/ |
| |
/*&ja |
| |
|
| |
5.1 ¥ª¥×¥·¥ç¥ó |
| |
*/ |
| |
/*&common |
| |
|
| int setflag_parse(int flag); |
int setflag_parse(int flag); |
| |
|
| |
*/ |
| |
/*&ja |
| setflag_parse(PFLAG_ADDREV) ¤Ë¤è¤Ã¤Æ¡¢CMO ¤Îû½Ìɽ¸½¤òµö¤¹¡£ |
setflag_parse(PFLAG_ADDREV) ¤Ë¤è¤Ã¤Æ¡¢CMO ¤Îû½Ìɽ¸½¤òµö¤¹¡£ |
| |
*/ |
| |
/*&en |
| |
We set an option for the parser. If we call |
| |
setflag_parse(PFLAG_ADDREV), then the parser admits external |
| |
expressios. |
| |
*/ |
| |
/*&en |
| |
|
| |
5.2 Initializing |
| |
*/ |
| |
/*&ja |
| |
|
| |
5.2 ½é´ü²½ |
| |
*/ |
| |
/*&common |
| |
|
| int init_parser(char *str); |
int init_parser(char *str); |
| |
|
| |
*/ |
| |
/*&ja |
| ¥Ñ¡¼¥µ¤¬½èÍý¤¹¤Ù¤Ê¸»úÎó¤ò¥»¥Ã¥È¤¹¤ë¡£ |
¥Ñ¡¼¥µ¤¬½èÍý¤¹¤Ù¤Ê¸»úÎó¤ò¥»¥Ã¥È¤¹¤ë¡£ |
| |
*/ |
| |
/*&en |
| |
We give the parser an OX/CMO expression, that is, a Lisp style string. |
| |
*/ |
| |
/*&en |
| |
|
| |
5.3 Getting an object |
| |
*/ |
| |
/*&ja |
| |
|
| |
5.3 ·ë²Ì¤òÆÀ¤ë |
| |
*/ |
| |
/*&common |
| |
|
| cmo *parse(); |
cmo *parse(); |
| |
|
| |
*/ |
| |
/*&ja |
| Lisp ɽ¸½¤Ë¤è¤ë OX expression, CMO expression ¤Î¹½Ê¸²òÀÏ´ï¡£¤¢¤é¤«¤¸¤á |
Lisp ɽ¸½¤Ë¤è¤ë OX expression, CMO expression ¤Î¹½Ê¸²òÀÏ´ï¡£¤¢¤é¤«¤¸¤á |
| ÀßÄꤵ¤ì¤¿Ê¸»úÎó¤ò²òÀϤ·¤Æ ox ¹½Â¤ÂΡ¢¤¢¤ë¤¤¤Ï cmo ¹½Â¤ÂΤòÀ¸À®¤¹¤ë¡£ |
ÀßÄꤵ¤ì¤¿Ê¸»úÎó¤ò²òÀϤ·¤Æ ox ¹½Â¤ÂΡ¢¤¢¤ë¤¤¤Ï cmo ¹½Â¤ÂΤòÀ¸À®¤¹¤ë¡£ |
| */ |
*/ |
| |
/*&en |
| |
The parser returns an OX/CMO object. If the given string is illegal, |
| |
then the parser returns NULL. |
| |
*/ |
| /*&ja |
/*&ja |
| |
|
| 7. ÉÕ°¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ |
7. ÉÕ°¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ |
| |
|
| |
*/ |
| |
/*&en |
| |
|
| |
7. Sample programs. |
| |
|
| |
*/ |
| |
/*&common |
| testclient |
testclient |
| |
|
| |
*/ |
| |
/*&ja |
| ¥Æ¥¹¥ÈÍѤµ¤Ê OpenXM ¥¯¥é¥¤¥¢¥ó¥È¡£OX expression ¤òÆþÎϤ·¤ÆÁ÷¿®¤¹¤ë |
¥Æ¥¹¥ÈÍѤµ¤Ê OpenXM ¥¯¥é¥¤¥¢¥ó¥È¡£OX expression ¤òÆþÎϤ·¤ÆÁ÷¿®¤¹¤ë |
| ¤³¤È¤Î¤ß²Äǽ¡£SM_popCMO, SM_popString ¤ò´Þ¤à¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤·¤¿¾ì¹ç¤Ë |
¤³¤È¤Î¤ß²Äǽ¡£SM_popCMO, SM_popString ¤ò´Þ¤à¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤·¤¿¾ì¹ç¤Ë |
| ¤Ï¡¢¥µ¡¼¥Ð¤«¤éÁ÷¤é¤ì¤Æ¤¯¤ë¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë¡£ |
¤Ï¡¢¥µ¡¼¥Ð¤«¤éÁ÷¤é¤ì¤Æ¤¯¤ë¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë¡£ |
| |
|
| |
*/ |
| |
/*&en |
| |
This is a small OpenXM client. We send an OX message by inputting an |
| |
OX expression and display data messages gotten from a server. |
| |
|
| |
*/ |
| |
/*&common |
| bconv |
bconv |
| |
|
| |
*/ |
| |
/*&ja |
| ¥Ð¥¤¥È¥³¡¼¥É¥¨¥ó¥³¡¼¥À¡£OX expression ¤¢¤ë¤¤¤Ï CMO expression ¤òÆþÎϤ¹ |
¥Ð¥¤¥È¥³¡¼¥É¥¨¥ó¥³¡¼¥À¡£OX expression ¤¢¤ë¤¤¤Ï CMO expression ¤òÆþÎϤ¹ |
| ¤ë¤È¡¢Âбþ¤¹¤ë¥Ð¥¤¥ÈÎó¤òɽ¼¨¤¹¤ë¡£ |
¤ë¤È¡¢Âбþ¤¹¤ë¥Ð¥¤¥ÈÎó¤òɽ¼¨¤¹¤ë¡£ |
| |
|
| |
*/ |
| |
/*&en |
| |
A byte code encoder. It shows a byte stream which corresponds to an |
| |
OX expression. |
| |
|
| |
*/ |
| |
/*&common |
| ox_Xsample |
ox_Xsample |
| |
|
| |
*/ |
| |
/*&ja |
| GUI ɽ¼¨¤¹¤ë OpenXM ¥µ¡¼¥Ð¤Î¥µ¥ó¥×¥ë¡£ |
GUI ɽ¼¨¤¹¤ë OpenXM ¥µ¡¼¥Ð¤Î¥µ¥ó¥×¥ë¡£ |
| |
|
| */ |
*/ |
| |
/*&ja |
| |
8. ÉÕÏ¿ |
| |
|
| |
8.1 ox.c ¤Ë¤ª¤±¤ë´Ø¿ô¤Î̿̾µ¬Â§ |
| |
|
| |
(1) receive_cmo ´Ø¿ô¤ÏCMO¥¿¥°¤È¥Ç¡¼¥¿ËÜÂΤò¼õ¿®¤¹¤ë. ¤³¤Î´Ø¿ô¤Ï CMO¥¿ |
| |
¥°¤ÎÃͤ¬»öÁ°¤Ëʬ¤«¤é¤Ê¤¤¤È¤¤Ë»ÈÍѤ¹¤ë. ÊÖ¤êÃͤȤ·¤Æ¡¢cmo ¤Ø¤Î¥Ý¥¤¥ó¥¿ |
| |
¤òÊÖ¤¹. |
| |
(2) receive_cmo_X ´Ø¿ô¤Ï, CMO¥¿¥°¤ò¿Æ¤Î´Ø¿ô¤Ç¼õ¿®¤·¤Æ¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤ë |
| |
´Ø¿ô¤Ç¡¢¥Ç¡¼¥¿ËÜÂΤΤߤò¼õ¿®¤·¡¢cmo_X ¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹. ¤·¤«¤â¡¢´Ø |
| |
¿ôÆâÉô¤Ç new_cmo_X ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹. |
| |
(3) send_cmo ´Ø¿ô¤ÏCMO¥¿¥°¤È¥Ç¡¼¥¿ËÜÂΤòÁ÷¿®¤¹¤ë. |
| |
(4) send_cmo_X ´Ø¿ô¤ÏCMO¥¿¥°¤ò¿Æ¤Î´Ø¿ô¤ÇÁ÷¿®¤·¤Æ¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Ç¡¢ |
| |
¥Ç¡¼¥¿ËÜÂΤΤߤòÁ÷¿®¤¹¤ë. |
| |
(5) ¤¿¤À¤· receive_ox_tag ¤ò½ü¤¤¤Æ, receive_ox_X ´Ø¿ô¤Ïºî¤é¤Ê¤¤. |
| |
receive_cmo ¤òÍøÍѤ¹¤ë. |
| |
(6) send_ox_X ´Ø¿ô¤Ï OX ¥¿¥°¤ò´Þ¤á¤ÆÁ÷¿®¤¹¤ë. |
| |
(7) ox_X ´Ø¿ô¤Ï°ìÏ¢¤ÎÁ÷¼õ¿®¤ò´Þ¤à¤è¤êÃê¾ÝŪ¤ÊÁàºî¤òɽ¸½¤¹¤ë. ox_X ´Ø |
| |
¿ô¤Ï¡¢Âè°ì°ú¿ô¤È¤·¤Æ¡¢ox_file_t·¿¤ÎÊÑ¿ô sv ¤ò¤È¤ë. |
| |
(8) Y_cmo ´Ø¿ô¤È Y_cmo_X ´Ø¿ô¤Î´Ø·¸¤Ï¼¡¤ÎÄ̤ê: |
| |
¤Þ¤º Y_cmo ´Ø¿ô¤Ç cmo ¤Î¥¿¥°¤ò½èÍý¤·¡¢¥¿¥°¤ò½ü¤¤¤¿»Ä¤ê¤ÎÉôʬ¤òY_cmo_X |
| |
´Ø¿ô¤¬½èÍý¤¹¤ë. cmo ¤ÎÆâÉô¤Ë cmo_Z ¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬¤¢¤ë¤È¤¤Ë¤Ï¡¢¤½¤Î¼ï |
| |
Îà¤Ë¤è¤é¤º¤Ë Y_cmo ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹. |
| |
|
| |
*/ |
| |
|