version 1.4, 1999/12/15 08:04:50 |
version 1.14, 2000/11/20 17:59:34 |
|
|
# 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.13 2000/10/11 20:34:28 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 ¤¤¤¤µ¤Ä |
|
¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ï ox_math ¤ª¤è¤Ó math2ox ¤ò³«È¯¤¹¤ë¤¿¤á¤ËÀ߷פµ¤ì¤¿¡£ |
|
¥é¥¤¥Ö¥é¥ê¼«¿È¤Ë¤Ï¡¢ Mathematica ¤Ë°Í¸¤·¤¿Éôʬ¤Ï¤Ê¤¤¡£ |
|
*/ |
|
/* &en Introduction |
|
|
|
*/ |
/*&ja |
/*&ja |
libox.a ¤òÍøÍѤ¹¤ë¤Ë¤Ï¼¡¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ |
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 |
|
|
#include <oxtag.h> |
#include <ox_toolkit.h> |
#include <ox.h> |
|
#include <parse.h> |
|
|
|
*/ |
*/ |
/*&ja |
/*&ja |
Line 35 The OpenXM C libraiy has header files: |
|
Line 40 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_toolkit.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 |
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 is 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? |
|
|
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 |
|
|
|
new_cmo_null(); |
new_cmo_null(); |
new_cmo_int32(int i); |
new_cmo_int32(int i); |
Line 125 new_cmo_error2(cmo* ob); |
|
Line 129 new_cmo_error2(cmo* ob); |
|
|
|
*/ |
*/ |
/*&ja |
/*&ja |
3. ¹â¿å½à API |
3. ¥³¥Í¥¯¥·¥ç¥ó |
|
|
|
OXFILE ¤Ï OpenXM ¤Ç¤ÎÄÌ¿®Ï©¤òɽ¸½¤¹¤ë¥¯¥é¥¹¤Ç¤¢¤ë¡£¤³¤Î¥¯¥é¥¹¤Î¥ª¥Ö¥¸¥§ |
|
¥¯¥È¤òÌÀ¼¨Åª¤Ë¤ÏÀ¸À®¤·¤Ê¤¤¤³¤È¡£É¬¤º¥³¥ó¥¹¥È¥é¥¯¥¿¤òÍøÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é |
|
¤Ê¤¤¡£¤³¤ì¤Ï¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¤ÇÀܳ»þ¤Î¼ê½ç¤¬°Û¤Ê¤ë¤³¤È¤ËͳÍ褹¤ë¡£ |
|
¥Ð¥¤¥È¥ª¡¼¥À¤Ë´ØÏ¢¤·¤¿½èÍý¤Ï¤³¤Î¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤Ç¼Â¸½¤µ¤ì¤ë¡£¤³¤Î¥¯¥é |
|
¥¹¤Î¥á¥½¥Ã¥É¤È¤·¤Æ¼¡¤Î¤â¤Î¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£ |
|
|
|
3.1 ¥³¥ó¥¹¥È¥é¥¯¥¿ |
|
|
|
OXFILE *oxf_connect_active(char *hostname, short port); |
|
|
|
ǽưŪ¤ËÀܳ¤¹¤ë¾ì¹ç¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¡£Ä̾¥µ¡¼¥Ð¤ÇÍøÍѤ¹¤ë¡£ |
|
|
|
OXFILE *oxf_connect_passive(int listened); |
|
|
|
¼õưŪ¤ËÀܳ¤¹¤ë¤¿¤á¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¡£ |
|
ÆâÉô¤Ç accept() ¤ò¸Æ¤Ö¤Î¤Ç¡¢listened ¤Ë¤Ï mysocketListen() ¤ÎÊÖ¤·¤¿Ãͤ¬É¬Íס£ |
|
|
|
OXFILE *oxf_open(int fd); |
|
|
|
¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤¹¤ë¤À¤±¤Ç¡¢Àܳ¤Ï¹Ô¤ï¤Ê¤¤¡£¤¹¤Ç¤Ë¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡ |
|
¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò fd ¤Ë»ØÄꤹ¤ë¡£·×»»¥µ¡¼¥Ð¤Ç¤ÎÍøÍѤòÁÛÄê¡£ |
|
|
|
3.2 ǧ¾Ú¤Ë´ØÏ¢¤·¤¿¥á¥½¥Ã¥É |
|
|
|
int oxf_confirm_client(OXFILE *oxfp, char *passwd); |
|
|
|
¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤Îǧ¾Ú¤ò¹Ô¤¦¡£ÊÖ¤êÃͤ¬1¤Î¤È¤¤ËÀ®¸ù¡¢0¤Î¤È¤¤Ë¼ºÇÔ¡£ |
|
|
|
int oxf_confirm_server(OXFILE *oxfp, char *passwd); |
|
|
|
¥µ¡¼¥Ð¦¤Ç¤Îǧ¾Ú¤ò¹Ô¤¦¡£¾ï¤ËÀ®¸ù¤¹¤ë¡£ |
|
|
|
void oxf_determine_byteorder_client(OXFILE *oxfp); |
|
void oxf_determine_byteorder_server(OXFILE *oxfp); |
|
|
|
oxfp ¤Î»Ø¤¹ÄÌ¿®Ï©¤Ç¤Î¥Ð¥¤¥È¥ª¡¼¥À¤ò·èÄꤷ¡¢oxfp ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò½ñ¤´¹¤¨¤ë¡£ |
|
|
|
void oxf_setopt(OXFILE *oxfp, int mode); |
|
|
|
oxfp ¤ÎÀßÄê¤ò¹Ô¤¦¡£oxf_determine_byteorder_XXX() ¤ÇÍѤ¤¤é¤ì¤Æ¤¤¤ë¡£ |
|
|
|
3.3 ¤½¤Î¾¤Î¥á¥½¥Ã¥É |
|
|
|
int oxf_read(void *buffer, size_t size, size_t num, OXFILE *oxfp); |
|
int oxf_write(void *buffer, size_t size, size_t num, OXFILE *oxfp); |
|
void oxf_flush(OXFILE *oxfp); |
|
void oxf_close(OXFILE *oxfp); |
|
|
|
fread, fwrite, fflush, fclose ¤Ë½àµò¡£ |
|
|
|
*/ |
|
/*&ja |
|
4. ¹â¿å½à API(¤³¤Îµ½Ò¤Ï¸Å¤¤¤Î¤Ç»È¤ï¤Ê¤¤¤³¤È) |
|
|
¹â¿å½à API ¤Ï¡ÖOpenXM ¥¯¥é¥¤¥¢¥ó¥È¡×¤«¤éÍøÍѤ¹¤ë¤³¤È¤òÁ°Äó¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¡£ |
¹â¿å½à API ¤Ï¡ÖOpenXM ¥¯¥é¥¤¥¢¥ó¥È¡×¤«¤éÍøÍѤ¹¤ë¤³¤È¤òÁ°Äó¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¡£ |
|
|
3.1 ÄÌ¿®¤Î³«»Ï |
4.1 ÄÌ¿®¤Î³«»Ï |
|
|
ÄÌ¿®¤ò³«»Ï¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¼¡¤Î´Ø¿ô¤Î¤¤¤º¤ì¤«¤òÍøÍѤ¹¤ë¡£ |
ÄÌ¿®¤ò³«»Ï¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¼¡¤Î´Ø¿ô¤Î¤¤¤º¤ì¤«¤òÍøÍѤ¹¤ë¡£ |
*/ |
*/ |
/*&en |
/*&en |
3. High-level API |
4. 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? |
4.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 |
|
|
ox_file_t ox_start(char* host, char* prog1, char* prog2); |
OXFILE *ox_start(char* host, char* prog1, char* prog2); |
ox_file_t ox_start_insecure_nonreverse(char* host, short portControl, short portStream); |
OXFILE *ox_start_insecure_nonreverse(char* host, short portControl, short portStream); |
|
|
*/ |
*/ |
/*&ja |
/*&ja |
Line 165 portStream ¤Ï·×»»¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤Î¤¿¤á¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¢¤ |
|
Line 224 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 ÄÌ¿®¤Î½ªÎ» |
4.2 ÄÌ¿®¤Î½ªÎ» |
|
|
ÄÌ¿®¤Î½ªÎ»¤Î¤¿¤á¤Ë¤Ï¼¡¤ÎÆó¤Ä¤Î´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£ |
ÄÌ¿®¤Î½ªÎ»¤Î¤¿¤á¤Ë¤Ï¼¡¤ÎÆó¤Ä¤Î´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£ |
|
|
*/ |
*/ |
/*&en |
/*&en |
3.2 How to close connection to OpenXM server? |
4.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 |
void ox_close(ox_file_t sv); |
void ox_close(OXFILE *sv); |
void ox_shutdown(ox_file_t sv); |
void ox_shutdown(OXFILE *sv); |
|
|
*/ |
*/ |
/*&ja |
/*&ja |
Line 187 void ox_shutdown(ox_file_t sv); |
|
Line 256 void ox_shutdown(ox_file_t sv); |
|
¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë¡£ÂèÆó¤Î´Ø¿ô¤Ï·×»»¥µ¡¼¥Ð¤Ë SM_shutdown ¤òÁ÷¤ë¤³¤È¤Ë |
¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë¡£ÂèÆó¤Î´Ø¿ô¤Ï·×»»¥µ¡¼¥Ð¤Ë SM_shutdown ¤òÁ÷¤ë¤³¤È¤Ë |
¤è¤Ã¤Æ¡¢¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë(ͽÄê)¡£ |
¤è¤Ã¤Æ¡¢¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë(ͽÄê)¡£ |
|
|
/* |
*/ |
/*&ja |
/*&ja |
3.3 SM ¥³¥Þ¥ó¥É¤ÎÁ÷¿® |
4.3 SM ¥³¥Þ¥ó¥É¤ÎÁ÷¿® |
|
|
*/ |
*/ |
/*&en |
/*&en |
3.3 How to command to OpenXM stack machine? |
4.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(OXFILE *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 OpenXM/include/ox_toolkit_tags.h for a list of operation codes. |
|
|
*/ |
*/ |
/*&ja |
/*&ja |
3.4 CMO ¤ÎÁ÷¼õ¿® |
4.4 CMO ¤ÎÁ÷¼õ¿® |
|
*/ |
|
/*&en |
|
4.4 How to receive a CMO? |
|
*/ |
|
/*&common |
|
|
void ox_push_cmo(ox_file_t sv, cmo *c); |
void ox_push_cmo(OXFILE *sv, cmo *c); |
cmo* ox_pop_cmo(ox_file_t sv); |
cmo* ox_pop_cmo(OXFILE *sv); |
char* ox_popString(ox_file_t sv); |
char* ox_popString(OXFILE *sv); |
|
|
|
*/ |
|
/*&ja |
ox_push_cmo ¤Ï cmo ¤òÁ÷¿®¡¢ox_pop_cmo ¤Ï cmo ¤ò¼õ¿®¤¹¤ë¡£ox_popString |
ox_push_cmo ¤Ï cmo ¤òÁ÷¿®¡¢ox_pop_cmo ¤Ï cmo ¤ò¼õ¿®¤¹¤ë¡£ox_popString |
¤Ï cmo ¤òʸ»úÎó·Á¼°¤ËÊÑ´¹¤·¤Æ¼õ¿®¤¹¤ë¤¬¡¢ÊÑ´¹¤Î·ë²Ì¤Ï¥µ¡¼¥Ð¤Ë¤è¤Ã¤Æ°Û |
¤Ï cmo ¤òʸ»úÎó·Á¼°¤ËÊÑ´¹¤·¤Æ¼õ¿®¤¹¤ë¤¬¡¢ÊÑ´¹¤Î·ë²Ì¤Ï¥µ¡¼¥Ð¤Ë¤è¤Ã¤Æ°Û |
¤Ê¤ë¡£ |
¤Ê¤ë¡£ |
|
|
3.5 ¥¹¥¿¥Ã¥¯½èÍý |
*/ |
|
/*&en |
|
*/ |
|
/*&ja |
|
4.5 ¥¹¥¿¥Ã¥¯½èÍý |
|
*/ |
|
/*&common |
|
|
int ox_pops(ox_file_t sv, int num); |
int ox_pops(OXFILE *sv, int num); |
|
|
|
*/ |
|
/*&ja |
¥¹¥¿¥Ã¥¯¾å¤Î num ¸Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÇÑ´þ¤¹¤ë¡£ |
¥¹¥¿¥Ã¥¯¾å¤Î num ¸Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÇÑ´þ¤¹¤ë¡£ |
|
|
3.6 |
*/ |
|
/*&ja |
|
4.6 ÄÌ¿®Ï©¤Î¥Õ¥é¥Ã¥·¥å |
|
*/ |
|
/*&common |
|
|
int ox_flush(ox_file_t sv); |
int ox_flush(OXFILE *sv); |
|
|
|
*/ |
|
/*&ja |
ÄÌ¿®Ï©¤ò flush ¤¹¤ë(¼ÂºÝ¤Ë¤Ï²¿¤â¤·¤Ê¤¤)¡£ |
ÄÌ¿®Ï©¤ò flush ¤¹¤ë(¼ÂºÝ¤Ë¤Ï²¿¤â¤·¤Ê¤¤)¡£ |
|
|
3.7 |
*/ |
|
/*&ja |
|
4.7 ÄÌ¿®¤ÎÃæÃÇ |
|
*/ |
|
/*&common |
|
|
void ox_reset(ox_file_t sv); |
void ox_reset(OXFILE *sv); |
|
|
|
*/ |
|
/*&ja |
·×»»¤òÃæÃǤ¹¤ë¡£ |
·×»»¤òÃæÃǤ¹¤ë¡£ |
|
|
3.8 |
*/ |
|
/*&ja |
|
4.8 ¥í¡¼¥«¥ë¸À¸ì¤Ç½ñ¤«¤ì¤¿¥³¥Þ¥ó¥É¤Îɾ²Á |
|
*/ |
|
/*&common |
|
|
void ox_execute_string(ox_file_t sv, char* str); |
void ox_execute_string(OXFILE *sv, char* str); |
|
|
|
*/ |
|
/*&ja |
¥µ¡¼¥Ð¤Î¥í¡¼¥«¥ë¸À¸ì¤Ç½ñ¤«¤ì¤¿Ì¿Îá¤òɾ²Á¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
¥µ¡¼¥Ð¤Î¥í¡¼¥«¥ë¸À¸ì¤Ç½ñ¤«¤ì¤¿Ì¿Îá¤òɾ²Á¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
|
|
3.9 |
*/ |
|
/*&ja |
|
4.9 ´Ø¿ô¸Æ¤Ó½Ð¤· |
|
*/ |
|
/*&common |
|
|
int ox_cmo_rpc(ox_file_t sv, char *function, int argc, cmo *argv[]); |
int ox_cmo_rpc(OXFILE *sv, char *function, int argc, cmo *argv[]); |
|
|
|
*/ |
|
/*&ja |
function(argv[1], ...) ¤ò·×»»¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
function(argv[1], ...) ¤ò·×»»¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ |
|
|
3.10 |
*/ |
|
/*&ja |
|
4.10 Mathcap ¤Î¼õ¿® |
|
|
cmo_mathcap* ox_mathcap(ox_file_t sv); |
*/ |
|
/*&common |
|
cmo_mathcap* ox_mathcap(OXFILE *sv); |
|
|
|
*/ |
|
/*&ja |
Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ËǤ¤µ¤ì¤Æ¤¤¤ë¡£ |
Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ËǤ¤µ¤ì¤Æ¤¤¤ë¡£ |
¤¤¤º¤ì¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤ëͽÄê¡£ |
¤¤¤º¤ì¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤ëͽÄê¡£ |
|
|
*/ |
*/ |
/*&ja |
/*&ja |
4. Äã¿å½à API |
|
|
|
|
5. Äã¿å½à API |
|
|
Äã¿å½à API ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òľÀÜÍøÍѤ¹¤ë¡£ |
Äã¿å½à API ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òľÀÜÍøÍѤ¹¤ë¡£ |
|
|
4.1 ÄÌ¿®¤Ë»È¤ï¤ì¤ë¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê |
5.1 ÄÌ¿®¤Ë»È¤ï¤ì¤ë¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê |
|
|
*/ |
*/ |
/*&en |
/*&en |
4. Low-level API. |
|
|
|
4.1 How to decide a byte order of integers? |
5. Low-level API. |
|
|
|
In this section, ``fd'' is an identifier of an OpenXM connection. |
|
|
|
5.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 397 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 |
|
|
|
int send_int32(int fd, int integer); |
5.2 |
|
|
*/ |
*/ |
/*&ja |
|
fd ¤Ë 32bit À°¿ô¤ò½ñ¤¹þ¤à¡£ |
|
|
|
*/ |
|
/*&common |
/*&common |
|
int send_int32(int fd, int integer); |
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 |
|
|
|
int send_cmo(int fd, cmo* m); |
5.3 |
|
|
*/ |
*/ |
/*&ja |
|
fd ¤Ë cmo ¤ò½ñ¤¹þ¤à¡£ |
|
|
|
*/ |
|
/*&common |
/*&common |
|
int send_cmo(int fd, cmo* m); |
cmo* receive_cmo(int fd); |
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 |
|
|
4.4 |
5.4 |
|
|
|
*/ |
|
/*&common |
int next_serial(); |
int next_serial(); |
|
|
|
*/ |
|
/*&ja |
¥·¥ê¥¢¥ë¥Ê¥ó¥Ð¤òÀ¸À®¤¹¤ë¡£ |
¥·¥ê¥¢¥ë¥Ê¥ó¥Ð¤òÀ¸À®¤¹¤ë¡£ |
|
*/ |
|
/*&en |
|
next_serial() generates a serial number for ox message. |
|
*/ |
|
/*&common |
|
|
4.5 |
5.5 |
|
|
|
*/ |
|
/*&common |
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 |
5.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); |
|
|
ox ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£ |
|
*/ |
|
|
|
|
*/ |
|
/*&ja |
|
OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£ |
|
*/ |
|
|
|
/*&ja |
|
|
|
6. OX expression ¥Ñ¡¼¥µ |
|
|
|
*/ |
|
/*&en |
|
|
|
6. 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 |
|
|
|
6.1 Setting an option |
|
*/ |
|
/*&ja |
|
|
|
6.1 ¥ª¥×¥·¥ç¥ó |
|
*/ |
|
/*&common |
|
|
|
int setflag_parse(int flag); |
|
|
|
*/ |
|
/*&ja |
|
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 |
|
|
|
6.2 Initializing |
|
*/ |
|
/*&ja |
|
|
|
6.2 ½é´ü²½ |
|
*/ |
|
/*&common |
|
|
|
int init_parser(char *str); |
|
|
|
*/ |
|
/*&ja |
|
¥Ñ¡¼¥µ¤¬½èÍý¤¹¤Ù¤Ê¸»úÎó¤ò¥»¥Ã¥È¤¹¤ë¡£ |
|
*/ |
|
/*&en |
|
We give the parser an OX/CMO expression, that is, a Lisp style string. |
|
*/ |
|
/*&en |
|
|
|
6.3 Getting an object |
|
*/ |
|
/*&ja |
|
|
|
6.3 ·ë²Ì¤òÆÀ¤ë |
|
*/ |
|
/*&common |
|
|
|
cmo *parse(); |
|
|
|
*/ |
|
/*&ja |
|
Lisp ɽ¸½¤Ë¤è¤ë OX expression, CMO expression ¤Î¹½Ê¸²òÀÏ´ï¡£¤¢¤é¤«¤¸¤á |
|
ÀßÄꤵ¤ì¤¿Ê¸»úÎó¤ò²òÀϤ·¤Æ ox ¹½Â¤ÂΡ¢¤¢¤ë¤¤¤Ï cmo ¹½Â¤ÂΤòÀ¸À®¤¹¤ë¡£ |
|
*/ |
|
/*&en |
|
The parser returns an OX/CMO object. If the given string is illegal, |
|
then the parser returns NULL. |
|
*/ |
|
/*&ja |
|
|
|
7. Mathcap ¥Ç¡¼¥¿¥Ù¡¼¥¹ |
|
|
|
7.1. ³µÍ× |
|
|
|
Mathcap ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ï¡¢³ÆÄÌ¿®Ï©¤´¤È¤ËÀ¸À®¤µ¤ì¤ë¶É½ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤È¡¢ÄÌ |
|
¿®Ï©¤Ë´Ø·¸¤Ê¤¯ÊÝ»ý¤µ¤ì¤ëÂç°è¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¤Ê¤ë¡£Âç°è¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ï¡¢ |
|
¶É½ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÀ¸À®»þ¤Ë½é´üÃͤȤ·¤Æ¤âÍøÍѤµ¤ì¤ë¡£¶É½ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤È |
|
$Âç°è¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î´Ø·¸¤Ï¼¡¤Î¤è¤¦¤ËÍý²ò¤¹¤ì¤Ð¤è¤¤¡£¤¹¤Ê¤ï¤Á¡¢Mathcap ¥¯ |
|
¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬¶É½ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¤¢¤ê¡¢ÀÅŪ¥á¥ó¥Ð¤¬Âç°è¥Ç¡¼¥¿¥Ù¡¼ |
|
¥¹¤Ç¤¢¤ë¡£ |
|
|
|
7.2. ¥á¥½¥Ã¥É |
|
|
|
Mathcap ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ï mathcap.c ¤Ç¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡£¥æ¡¼¥¶¤Ï¼¡¤Î´Ø¿ô¤ò |
|
²ð¤·¤Æ¡¢Mathcap ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ |
|
|
|
void mathcap_global_init(int version, char *id, char *sysname, int cmo[], sm_cmd[]); |
|
|
|
Âç°è¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò½é´ü²½¤¹¤ë¡£¥¯¥é¥¤¥¢¥ó¥È¤ª¤è¤Ó¥µ¡¼¥Ð¤Ï¥×¥í¥°¥é¥à¤ò³« |
|
»Ï¤¹¤ë¤È¤¤Ë¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ð¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£cmo ¤Ï CMO ¤Î¥¿¥°¤Î¥ê¥¹ |
|
¥È¤Ç¤¢¤Ã¤Æ¡¢0 ¤Ç½ªÃ¼¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£sm_cmd ¤âƱÍÍ¡£ |
|
|
|
cmo_mathcap *mathcap_get(mathcap *this); |
|
|
|
Mathcap ¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò cmo_mathcap ¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ËÊÑ´¹¤¹¤ë¡£ |
|
|
|
mathcap *mathcap_update(mathcap *this, cmo_mathcap *mc); |
|
|
|
ÄÌ¿®Áê¼ê¤«¤éÆþ¼ê¤·¤¿cmo_mathcap ¥ª¥Ö¥¸¥§¥¯¥È¤òÍѤ¤¤Æ¡¢Mathcap ¥Ç¡¼¥¿¥Ù¡¼ |
|
¥¹¤ò¹¹¿·¤¹¤ë¡£ |
|
|
|
7.3. ox_toolkit ¤Ë¤ª¤±¤ë¼ÂÁõ¤ÎÌäÂêÅÀ(obsolete) |
|
|
|
¸½ºß¤Ï¥·¥¹¥Æ¥àÁ´ÂΤǰì¤Ä¤Î Mathcap ¥Ç¡¼¥¿¥Ù¡¼¥¹¤·¤«¤â¤¿¤Ê¤¤¤è¤¦¤Ê¼ÂÁõ |
|
¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤È¤³¤í¤¬¡¢OpenXM ¥¯¥é¥¤¥¢¥ó¥È¤ÏÊ£¿ô¤Î·×»»¥µ¡¼¥Ð¤ÈƱ»þ¤Ë |
|
Àܳ¤µ¤ì¤ë¤³¤È¤¬µö¤µ¤ì¤Æ¤¤¤ë¡£¤³¤ì¤é¤Î·×»»¥µ¡¼¥Ð¤ÏƱ¼ï¤¢¤ë¤¤¤Ï°Û¼ï¤Ç¤¢ |
|
¤ë¤¬¡¢°Û¼ï¤Î¾ì¹ç¡¢¤½¤ì¤é OX ¥µ¡¼¥Ð¤ÎµöÍƤ¹¤ë CMO ¤ÎÈϰϤϰۤʤ롣¤·¤¿ |
|
¤¬¤Ã¤Æ¡¢·×»»¥µ¡¼¥Ð¤´¤È¤Ë Mathcap ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¤â¤ÄɬÍפ¬¤¢¤ë¡£¶ñÂÎŪ |
|
¤Ë¤Ï OXFILE ¥¯¥é¥¹¤Î(static ¤Ç¤Ï¤Ê¤¤)¥á¥ó¥Ð¤Ë¤Ê¤ë¤è¤¦¤Ê¼ÂÁõ¤Ç¤Ê¤±¤ì¤Ð |
|
¤Ê¤é¤Ê¤¤¡£ |
|
*/ |
|
/*&ja |
|
|
|
8. ÉÕ°¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ |
|
|
|
*/ |
|
/*&en |
|
|
|
8. Sample programs. |
|
|
|
*/ |
|
/*&common |
|
testclient |
|
|
|
*/ |
|
/*&ja |
|
¥Æ¥¹¥ÈÍѤµ¤Ê OpenXM ¥¯¥é¥¤¥¢¥ó¥È¡£OX expression ¤òÆþÎϤ·¤ÆÁ÷¿®¤¹¤ë |
|
¤³¤È¤Î¤ß²Äǽ¡£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 |
|
|
|
*/ |
|
/*&ja |
|
¥Ð¥¤¥È¥³¡¼¥É¥¨¥ó¥³¡¼¥À¡£OX expression ¤¢¤ë¤¤¤Ï CMO expression ¤òÆþÎϤ¹ |
|
¤ë¤È¡¢Âбþ¤¹¤ë¥Ð¥¤¥ÈÎó¤òɽ¼¨¤¹¤ë¡£ |
|
|
|
*/ |
|
/*&en |
|
A byte code encoder. It shows a byte stream which corresponds to an |
|
OX expression. |
|
|
|
*/ |
|
/*&common |
|
ox_Xsample |
|
|
|
*/ |
|
/*&ja |
|
GUI ɽ¼¨¤¹¤ë OpenXM ¥µ¡¼¥Ð¤Î¥µ¥ó¥×¥ë¡£ |
|
|
|
*/ |
|
/*&ja |
|
9. ÉÕÏ¿ |
|
|
|
9.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 ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹. |
|
|
|
*/ |
|
|