[BACK]Return to README CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_toolkit

Diff for /OpenXM/src/ox_toolkit/README between version 1.6 and 1.14

version 1.6, 1999/12/22 11:29:15 version 1.14, 2000/11/20 17:59:34
Line 1 
Line 1 
 # 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.13 2000/10/11 20:34:28 ohara Exp $
   
 /*&ja ox_toolkit ¥æ¡¼¥¶¥¬¥¤¥É  /*&ja ox_toolkit ¥æ¡¼¥¶¥¬¥¤¥É
   
Line 8 
Line 8 
 /*&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
   
Line 65  cmo_error2
Line 70  cmo_error2
   
 */  */
 /*&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 126  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 to help an implementation of OpenXM clients.  High-level API is prepared to help an implementation of OpenXM clients.
   
 3.1 How to make connections to OpenXM servers?  4.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
   
 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 167  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 connections to OpenXM servers?  4.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
 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 190  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 machines?  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
 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
   4.4 CMO ¤ÎÁ÷¼õ¿®
   */
   /*&en
   4.4 How to receive a CMO?
   */
   /*&common
   
 3.4 CMO ¤ÎÁ÷¼õ¿®  void  ox_push_cmo(OXFILE *sv, cmo *c);
   cmo*  ox_pop_cmo(OXFILE *sv);
   char* ox_popString(OXFILE *sv);
   
 void  ox_push_cmo(ox_file_t sv, cmo *c);  */
 cmo*  ox_pop_cmo(ox_file_t sv);  /*&ja
 char* ox_popString(ox_file_t sv);  
   
 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.  5. Low-level API.
   
 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?  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 293  as an expression for integers.
Line 405  as an expression for integers.
 */  */
 /*&common  /*&common
   
 4.2  5.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 309  receive_int32() reads 32bits integer from an OpenXM co
Line 423  receive_int32() reads 32bits integer from an OpenXM co
 */  */
 /*&common  /*&common
   
 4.3  5.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 325  receive_cmo() reads an CMObject from an OpenXM connect
Line 441  receive_cmo() reads an CMObject from an OpenXM connect
 */  */
 /*&common  /*&common
   
 4.4  5.4
   
   */
   /*&common
 int next_serial();  int next_serial();
   
 */  */
Line 338  next_serial() generates a serial number for ox message
Line 456  next_serial() generates a serial number for ox message
 */  */
 /*&common  /*&common
   
 4.5  5.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 476  receive_ox_tag() reads a tag and a serial number of an
 */  */
 /*&common  /*&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);
   
 */  */
 /*&ja  /*&ja
 ox ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£  OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£
 */  */
   
 /*&ja  /*&ja
   
 5. OX expression ¥Ñ¡¼¥µ  6. OX expression ¥Ñ¡¼¥µ
   
 OpenXM C library ¤Ë¤Ï ʸ»úÎóɽ¸½¤µ¤ì¤¿  */
 OX expression ¤ª¤è¤Ó CMO expression ¤«¤é¡¢  /*&en
 ox ¹½Â¤ÂΤޤ¿¤Ï cmo ¹½Â¤ÂΤòÀ¸À®¤¹¤ë¤¿¤á¤Î¥Ñ¡¼¥µ¤¬ÉÕ°¤·¤Æ¤¤¤ë¡£  
   
 ¤³¤³¤Ç¤Ï¤³¤Î¥Ñ¡¼¥µ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£  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);  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
   
   6.2 Initializing
   */
   /*&ja
   
   6.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
   
   6.3 Getting an object
   */
   /*&ja
   
   6.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. 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  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
   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 ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹.
   
   */
   

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.14

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>