[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.3 and 1.11

version 1.3, 1999/12/15 02:44:12 version 1.11, 2000/10/10 05:23:19
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.2 1999/12/15 01:59:58 ohara Exp $  # $OpenXM: OpenXM/src/ox_toolkit/README,v 1.10 2000/03/10 12:24:38 ohara Exp $
   
 ¡ù libox.a ¥Þ¥Ë¥å¥¢¥ë¡£  /*&ja ox_toolkit ¥æ¡¼¥¶¥¬¥¤¥É
   
 libox.a ¤òÍøÍѤ¹¤ë¤Ë¤Ï¼¡¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£  */
   /*&en A user's guide for OpenXM C library.
   
 #include <oxtag.h>  */
 #include <ox.h>  /* &ja ¤¤¤­¤µ¤Ä
 #include <parse.h>  ¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ï ox_math ¤ª¤è¤Ó math2ox ¤ò³«È¯¤¹¤ë¤¿¤á¤ËÀ߷פµ¤ì¤¿¡£
   ¥é¥¤¥Ö¥é¥ê¼«¿È¤Ë¤Ï¡¢ Mathematica ¤Ë°Í¸¤·¤¿Éôʬ¤Ï¤Ê¤¤¡£
   */
   /* &en Introduction
   
 ³Æ¹½Â¤ÂΤª¤è¤Ó´Ø¿ô¤ÎÀë¸À¤Ï¤½¤ì¤¾¤ì¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£  */
 ¤³¤³¤Ç¤Ï´ðËÜŪ¤Ê¹Í¤¨Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£  /*&ja
   libox.a ¤òÍøÍѤ¹¤ë¤Ë¤Ï¼¡¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
   */
   /*&en
   How to use OpenXM C library?
   
 ¤Þ¤º¡¢¤¹¤Ù¤Æ¤Î CMO ¥Ç¡¼¥¿¤Ï¤½¤Î¥Ç¡¼¥¿·¿¤ËÂбþ¤·¤¿ new ´Ø¿ô¤Ë¤è¤Ã¤ÆÀ¸À®  In order to use libox.a, you need to include the following header files:
 ¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð CMO_ZZ ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï new_cmo_zz() ´Ø¿ô¤Ë¤è¤Ã¤ÆÀ¸  */
 À®¤µ¤ì¤Þ¤¹¡£  /*&common
   
 CMO ¥Ç¡¼¥¿¤òÁ÷¼õ¿®¤¹¤ë¤Ë¤Ï¡¢CMO ¤Î¼ïÎà¤Ë¤è¤é¤º send_cmo(),  #include <ox_toolkit.h>
 receive_cmo() ¤òÍѤ¤¤Þ¤¹¡£¤³¤ì¤é¤Î´Ø¿ô¤Ï OX ¥Ø¥Ã¥À¤ò°·¤¤¤Þ¤»¤ó¤Î¤Ç¡¢OX  
 ¥á¥Ã¥»¡¼¥¸¤òÁ÷¼õ¿®¤¹¤ë¤È¤­¤Ë¤Ï send_ox_tag(), receive_ox_tag() ¤ò¤½¤Î  
 Á°¤Ë¸Æ¤ÖɬÍפ¬¤¢¤ê¤Þ¤¹¡£  
   
   */
   /*&ja
 1. ¥Ç¡¼¥¿·¿  1. ¥Ç¡¼¥¿·¿
   
 ¤³¤Î¥Ä¡¼¥ë¥­¥Ã¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë³Æ¹½Â¤ÂΤÎÀ¸À®¤Ë¤Ä¤¤¤Æ¤Ï¼¡Àá¤ò»²¾È¤»¤è¡£  ¤³¤Î¥Ä¡¼¥ë¥­¥Ã¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë³Æ¹½Â¤ÂΤÎÀ¸À®¤Ë¤Ä¤¤¤Æ¤Ï¼¡Àá¤ò»²¾È¤»¤è¡£
   
 1.1 CMO (Common Math Object)  1.1 CMO (Common Math Object)
 ¼¡¤Î¥Ç¡¼¥¿·¿(¹½Â¤ÂÎ)¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£  ¼¡¤Î¥Ç¡¼¥¿·¿(¹½Â¤ÂÎ)¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£
   */
   /*&en
   1. Types
   
   1.1 CMO (Common Math Object)
   The following structures are defined in ox_toolkit.h:
   */
   /*&common
   
 cmo  cmo
 cmo_null  cmo_null
 cmo_int32  cmo_int32
Line 46  cmo_distributed_polynomial
Line 61  cmo_distributed_polynomial
 cmo_indeterminate  cmo_indeterminate
 cmo_error2  cmo_error2
   
   */
   /*&ja
 ¤³¤Î¤¦¤Á cmo ·¿¤Ï¤¤¤ï¤ÐÃê¾Ý´ðÄ쥯¥é¥¹¤ËÁêÅö¤¹¤ë¤â¤Î¤Ç¤¢¤ê¡¢¤³¤Î·¿¤Î¥ª  ¤³¤Î¤¦¤Á cmo ·¿¤Ï¤¤¤ï¤ÐÃê¾Ý´ðÄ쥯¥é¥¹¤ËÁêÅö¤¹¤ë¤â¤Î¤Ç¤¢¤ê¡¢¤³¤Î·¿¤Î¥ª
 ¥Ö¥¸¥§¥¯¥È¤òÌÀ¼¨Åª¤Ë¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£¤³¤Î¥¯¥é¥¹¤Ï¥Ý¥¤¥ó¥¿·¿¤Î¥­¥ã¥¹¥È¤Î  ¥Ö¥¸¥§¥¯¥È¤òÌÀ¼¨Åª¤Ë¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£¤³¤Î¥¯¥é¥¹¤Ï¥Ý¥¤¥ó¥¿·¿¤Î¥­¥ã¥¹¥È¤Î
 ¤¿¤á¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£¤Þ¤¿ cmo_distributed_polynomial ¤Ï cmo_list ¤ÎÇÉ  ¤¿¤á¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£¤Þ¤¿ cmo_distributed_polynomial ¤Ï cmo_list ¤ÎÇÉ
 À¸¥¯¥é¥¹¤Ç¤¢¤ë¤È»×¤Ã¤Æ¤â¤è¤¤¡£  À¸¥¯¥é¥¹¤Ç¤¢¤ë¤È»×¤Ã¤Æ¤â¤è¤¤¡£
   
   */
   /*&en
   The cmo above is abstract base class; you never make an object of cmo
   class.
   
   */
   /*&ja
 1.2 OX ¥ª¥Ö¥¸¥§¥¯¥È  1.2 OX ¥ª¥Ö¥¸¥§¥¯¥È
 ¼¡¤Î¥Ç¡¼¥¿·¿(¹½Â¤ÂÎ)¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£  ¼¡¤Î¥Ç¡¼¥¿·¿(¹½Â¤ÂÎ)¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£
   */
   /*&en
   1.2 OX objects
   The following structures are defined in ox_toolkit.h:
   */
   /*&common
   
 ox  ox
 ox_command  ox_command
 ox_data  ox_data
   
   */
   /*&ja
 ¤³¤Î¤¦¤Á¡¢ox ·¿¤ÏÃê¾Ý´ðÄ쥯¥é¥¹¤Ê¤Î¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¤Ä¤¯¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤¡£  ¤³¤Î¤¦¤Á¡¢ox ·¿¤ÏÃê¾Ý´ðÄ쥯¥é¥¹¤Ê¤Î¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¤Ä¤¯¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤¡£
   
   */
   /*&en
   The ox above is abstract base class.
   
   */
   /*&ja
 2. ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®  2. ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®
   
 ¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¡¢new ´Ø¿ô·²¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£¤½¤ì¤¾¤ì¤Î´Ø  ¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¡¢new ´Ø¿ô·²¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£¤½¤ì¤¾¤ì¤Î´Ø
 ¿ô¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Æ¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£  ¿ô¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Æ¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
   */
   /*&en
   2. How to make CMObjects?
   
   Use the following functions to generate an object.  It returns a
   pointer to the object.  */ /*&common
   
 new_cmo_null();  new_cmo_null();
 new_cmo_int32(int i);  new_cmo_int32(int i);
 new_cmo_string(char* s);  new_cmo_string(char* s);
Line 83  new_cmo_ring_by_name(cmo* ob);
Line 127  new_cmo_ring_by_name(cmo* ob);
 new_cmo_indeterminate(cmo* ob);  new_cmo_indeterminate(cmo* ob);
 new_cmo_error2(cmo* ob);  new_cmo_error2(cmo* ob);
   
 3. ¹â¿å½à API  */
   /*&ja
   2.5 ¥³¥Í¥¯¥·¥ç¥ó
   
   OXFILE ¤Ï OpenXM ¤Ç¤ÎÄÌ¿®Ï©¤òɽ¸½¤¹¤ë¥¯¥é¥¹¤Ç¤¢¤ë¡£¤³¤Î¥¯¥é¥¹¤Î¥ª¥Ö¥¸¥§
   ¥¯¥È¤òÌÀ¼¨Åª¤Ë¤ÏÀ¸À®¤·¤Ê¤¤¤³¤È¡£É¬¤º¥³¥ó¥¹¥È¥é¥¯¥¿¤òÍøÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é
   ¤Ê¤¤¡£¤³¤ì¤Ï¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¤ÇÀܳ»þ¤Î¼ê½ç¤¬°Û¤Ê¤ë¤³¤È¤ËͳÍ褹¤ë¡£
   ¥Ð¥¤¥È¥ª¡¼¥À¤Ë´ØÏ¢¤·¤¿½èÍý¤Ï¤³¤Î¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤Ç¼Â¸½¤µ¤ì¤ë¡£¤³¤Î¥¯¥é
   ¥¹¤Î¥á¥½¥Ã¥É¤È¤·¤Æ¼¡¤Î¤â¤Î¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£
   
   2.5.1 ¥³¥ó¥¹¥È¥é¥¯¥¿
   OXFILE *oxf_connect_active(char *hostname, short port);
   OXFILE *oxf_connect_passive(int listened);
   OXFILE *oxf_open(int fd);
   
   2.5.2 ǧ¾Ú¤Ë´ØÏ¢¤·¤¿¥á¥½¥Ã¥É
   int  oxf_confirm_client(OXFILE *oxfp, char *passwd);
   int  oxf_confirm_server(OXFILE *oxfp, char *passwd);
   void oxf_determine_byteorder_client(OXFILE *oxfp);
   void oxf_determine_byteorder_server(OXFILE *oxfp);
   void oxf_setopt(OXFILE *oxfp, int mode);
   
   2.5.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);
   
   */
   /*&ja
   3. ¹â¿å½à API(¤³¤Îµ­½Ò¤Ï¸Å¤¤¤Î¤Ç»È¤ï¤Ê¤¤¤³¤È)
   
 ¹â¿å½à API ¤Ï¡ÖOpenXM ¥¯¥é¥¤¥¢¥ó¥È¡×¤«¤éÍøÍѤ¹¤ë¤³¤È¤òÁ°Äó¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¡£  ¹â¿å½à API ¤Ï¡ÖOpenXM ¥¯¥é¥¤¥¢¥ó¥È¡×¤«¤éÍøÍѤ¹¤ë¤³¤È¤òÁ°Äó¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¡£
   
 3.1 ÄÌ¿®¤Î³«»Ï  3.1 ÄÌ¿®¤Î³«»Ï
   
 ÄÌ¿®¤ò³«»Ï¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¼¡¤Î´Ø¿ô¤Î¤¤¤º¤ì¤«¤òÍøÍѤ¹¤ë¡£  ÄÌ¿®¤ò³«»Ï¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¼¡¤Î´Ø¿ô¤Î¤¤¤º¤ì¤«¤òÍøÍѤ¹¤ë¡£
   */
   /*&en
   3. High-level API
   
 ox_file_t ox_start(char* host, char* prog1, char* prog2);  High-level API is prepared to help an implementation of OpenXM clients.
 ox_file_t ox_start_insecure_nonreverse(char* host, short portControl, short portStream);  
   
   3.1 How to make connections to OpenXM servers?
   
   In order to open a connection to an OpenXM server, you need to call
   ox_start() or to call ox_start_insecure_nonreverse().
   */
   /*&common
   
   OXFILE *ox_start(char* host, char* prog1, char* prog2);
   OXFILE *ox_start_insecure_nonreverse(char* host, short portControl, short portStream);
   
   */
   /*&ja
 Âè°ì¤Î´Ø¿ô¤Ï¡¢¥í¡¼¥«¥ë¥Þ¥·¥ó¾å¤Ë OpenXM ¥µ¡¼¥Ð¤òµ¯Æ°¤·¡¢¤½¤Î¥µ¡¼¥Ð¤È¤Î  Âè°ì¤Î´Ø¿ô¤Ï¡¢¥í¡¼¥«¥ë¥Þ¥·¥ó¾å¤Ë OpenXM ¥µ¡¼¥Ð¤òµ¯Æ°¤·¡¢¤½¤Î¥µ¡¼¥Ð¤È¤Î
 ´Ö¤Ë"reverse ¥â¡¼¥É"¤ÇÄÌ¿®Ï©¤ò³«Àߤ¹¤ë¡£ÄÌ¿®¤Ë»È¤ï¤ì¤ë¥Ý¡¼¥ÈÈÖ¹æ¤Ï¼«Æ°  ´Ö¤Ë"reverse ¥â¡¼¥É"¤ÇÄÌ¿®Ï©¤ò³«Àߤ¹¤ë¡£ÄÌ¿®¤Ë»È¤ï¤ì¤ë¥Ý¡¼¥ÈÈÖ¹æ¤Ï¼«Æ°
 Åª¤ËÀ¸À®¤µ¤ì¤ë¡£host ¤Ï¥í¡¼¥«¥ë¥Þ¥·¥ó¤Î¥Û¥¹¥È̾(¤¢¤ë¤¤¤Ï "localhost")¡¢  Åª¤ËÀ¸À®¤µ¤ì¤ë¡£host ¤Ï¥í¡¼¥«¥ë¥Þ¥·¥ó¤Î¥Û¥¹¥È̾(¤¢¤ë¤¤¤Ï "localhost")¡¢
Line 109  portStream ¤Ï·×»»¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤Î¤¿¤á¤Î¥Ý¡¼¥ÈÈÖ¹æ¤Ç¤¢¤
Line 197  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
 3.2 ÄÌ¿®¤Î½ªÎ»  3.2 ÄÌ¿®¤Î½ªÎ»
   
 ÄÌ¿®¤Î½ªÎ»¤Î¤¿¤á¤Ë¤Ï¼¡¤ÎÆó¤Ä¤Î´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£  ÄÌ¿®¤Î½ªÎ»¤Î¤¿¤á¤Ë¤Ï¼¡¤ÎÆó¤Ä¤Î´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡£
   
 void ox_close(ox_file_t sv);  */
 void ox_shutdown(ox_file_t sv);  /*&en
   3.2 How to close connections to OpenXM servers?
   
   In order to close a connection to an OpenXM server, you need to call
   ox_close() or to call ox_shutdown().
   
   */
   /*&common
   void ox_close(OXFILE *sv);
   void ox_shutdown(OXFILE *sv);
   
   */
   /*&ja
 Âè°ì¤Î´Ø¿ô¤Ï¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ë SM_control_kill ¤òÁ÷¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢  Âè°ì¤Î´Ø¿ô¤Ï¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ë SM_control_kill ¤òÁ÷¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
 ¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë¡£ÂèÆó¤Î´Ø¿ô¤Ï·×»»¥µ¡¼¥Ð¤Ë SM_shutdown ¤òÁ÷¤ë¤³¤È¤Ë  ¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë¡£ÂèÆó¤Î´Ø¿ô¤Ï·×»»¥µ¡¼¥Ð¤Ë SM_shutdown ¤òÁ÷¤ë¤³¤È¤Ë
 ¤è¤Ã¤Æ¡¢¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë(ͽÄê)¡£  ¤è¤Ã¤Æ¡¢¥µ¡¼¥Ð¤ò½ªÎ»¤µ¤»¤ë(ͽÄê)¡£
   
   */
   /*&ja
 3.3 SM ¥³¥Þ¥ó¥É¤ÎÁ÷¿®  3.3 SM ¥³¥Þ¥ó¥É¤ÎÁ÷¿®
   */
   /*&en
   3.3 How to command to OpenXM stack machines?
   */
   /*&common
   
 void  ox_push_cmd(ox_file_t sv, int sm_code);  void  ox_push_cmd(OXFILE *sv, int sm_code);
   
   */
   /*&ja
 ¥µ¡¼¥Ð¤Ë¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¥³¥Þ¥ó¥É¤òÁ÷¤ë¡£¥³¥Þ¥ó¥É¤Ï¥³¥Þ¥ó¥ÉÈÖ¹æ¤ÇÍ¿¤¨¤ë¡£  ¥µ¡¼¥Ð¤Ë¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¥³¥Þ¥ó¥É¤òÁ÷¤ë¡£¥³¥Þ¥ó¥É¤Ï¥³¥Þ¥ó¥ÉÈÖ¹æ¤ÇÍ¿¤¨¤ë¡£
   
   */
   /*&en
   ox_push_cmd() sends an operation code to an OpenXM stack machine.
   See OpenXM/include/ox_toolkit_tags.h for a list of operation codes.
   
   */
   /*&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(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 ¤òʸ»úÎó·Á¼°¤ËÊÑ´¹¤·¤Æ¼õ¿®¤¹¤ë¤¬¡¢ÊÑ´¹¤Î·ë²Ì¤Ï¥µ¡¼¥Ð¤Ë¤è¤Ã¤Æ°Û
 ¤Ê¤ë¡£  ¤Ê¤ë¡£
   
   */
   /*&en
   */
   /*&ja
 3.5 ¥¹¥¿¥Ã¥¯½èÍý  3.5 ¥¹¥¿¥Ã¥¯½èÍý
   */
   /*&common
   
 int ox_pops(ox_file_t sv, int num);  int ox_pops(OXFILE *sv, int num);
   
   */
   /*&ja
 ¥¹¥¿¥Ã¥¯¾å¤Î num ¸Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÇÑ´þ¤¹¤ë¡£  ¥¹¥¿¥Ã¥¯¾å¤Î num ¸Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÇÑ´þ¤¹¤ë¡£
   
 3.6  */
   /*&ja
   3.6 ÄÌ¿®Ï©¤Î¥Õ¥é¥Ã¥·¥å
   */
   /*&common
   
 int ox_flush(ox_file_t sv);  int ox_flush(OXFILE *sv);
   
   */
   /*&ja
 ÄÌ¿®Ï©¤ò flush ¤¹¤ë(¼ÂºÝ¤Ë¤Ï²¿¤â¤·¤Ê¤¤)¡£  ÄÌ¿®Ï©¤ò flush ¤¹¤ë(¼ÂºÝ¤Ë¤Ï²¿¤â¤·¤Ê¤¤)¡£
   
 3.7  */
   /*&ja
   3.7 ÄÌ¿®¤ÎÃæÃÇ
   */
   /*&common
   
 void ox_reset(ox_file_t sv);  void ox_reset(OXFILE *sv);
   
   */
   /*&ja
 ·×»»¤òÃæÃǤ¹¤ë¡£  ·×»»¤òÃæÃǤ¹¤ë¡£
   
 3.8  */
   /*&ja
   3.8 ¥í¡¼¥«¥ë¸À¸ì¤Ç½ñ¤«¤ì¤¿¥³¥Þ¥ó¥É¤Îɾ²Á
   */
   /*&common
   
 void ox_execute_string(ox_file_t sv, char* str);  void ox_execute_string(OXFILE *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(OXFILE *sv, char *function, int argc, cmo *argv[]);
   
   */
   /*&ja
 function(argv[1], ...) ¤ò·×»»¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ  function(argv[1], ...) ¤ò·×»»¤·¡¢·ë²Ì¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ
   
 3.10  */
   /*&ja
   3.10 Mathcap ¤Î¼õ¿®
   
 cmo_mathcap* ox_mathcap(ox_file_t sv);  */
   /*&common
   cmo_mathcap* ox_mathcap(OXFILE *sv);
   
   */
   /*&ja
 Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ËǤ¤µ¤ì¤Æ¤¤¤ë¡£  Mathcap ¤ò¼õ¤±¼è¤ë¡£¸½ºß¤Ï Mathcap ¤Î½èÍý¤Ï¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ËǤ¤µ¤ì¤Æ¤¤¤ë¡£
 ¤¤¤º¤ì¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤ëͽÄê¡£  ¤¤¤º¤ì¤³¤Î´Ø¿ô¤ÏÇѻߤµ¤ì¤ëͽÄê¡£
   */
   /*&ja
   
 4. Äã¿å½à API  4. Äã¿å½à API
   
 Äã¿å½à API ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òľÀÜÍøÍѤ¹¤ë¡£  Äã¿å½à API ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òľÀÜÍøÍѤ¹¤ë¡£
   
 4.1 ÄÌ¿®¤Ë»È¤ï¤ì¤ë¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê  4.1 ÄÌ¿®¤Ë»È¤ï¤ì¤ë¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê
   */
   /*&en
   
   4. Low-level API.
   
   In this section, ``fd'' is an identifier of an OpenXM connection.
   
   4.1 How to decide a byte order of integers?
   
   */
   /*&common
 int decideByteOrderServer(int fd, int order);  int decideByteOrderServer(int fd, int order);
   
   */
   /*&ja
 ¤³¤Î¥Ä¡¼¥ë¥­¥Ã¥È¤Ï¡¢¥µ¡¼¥Ð¤¬³«»Ï¤µ¤ì¤ë¤È¤­¤Ë¤Ï¤¹¤Ç¤ËÄÌ¿®Ï©¤¬ÀßÄꤵ¤ì¤Æ  ¤³¤Î¥Ä¡¼¥ë¥­¥Ã¥È¤Ï¡¢¥µ¡¼¥Ð¤¬³«»Ï¤µ¤ì¤ë¤È¤­¤Ë¤Ï¤¹¤Ç¤ËÄÌ¿®Ï©¤¬ÀßÄꤵ¤ì¤Æ
 ¤¤¤ë¤¬¡¢¤½¤ÎÄÌ¿®Ï©¤ËÍѤ¤¤ë¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê¤Ï¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤È²¾Äꤷ¤Æ  ¤¤¤ë¤¬¡¢¤½¤ÎÄÌ¿®Ï©¤ËÍѤ¤¤ë¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê¤Ï¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤È²¾Äꤷ¤Æ
 ¤¤¤ë¡£¾Ü¤·¤¯¤Ï¡¢¹â»³-ÌîϤ, "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
   
 4.2  4.2
   
   */
   /*&common
 int send_int32(int fd, int integer);  int send_int32(int fd, int integer);
   
 fd ¤Ë 32bit À°¿ô¤ò½ñ¤­¹þ¤à¡£  
   
 int receive_int32(int fd);  int receive_int32(int fd);
   
   */
   /*&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
   
 4.3  4.3
   
   */
   /*&common
 int  send_cmo(int fd, cmo* m);  int  send_cmo(int fd, cmo* m);
   
 fd ¤Ë cmo ¤ò½ñ¤­¹þ¤à¡£  
   
 cmo* receive_cmo(int fd);  cmo* receive_cmo(int fd);
   
   */
   /*&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  4.4
   
   */
   /*&common
 int next_serial();  int next_serial();
   
   */
   /*&ja
 ¥·¥ê¥¢¥ë¥Ê¥ó¥Ð¤òÀ¸À®¤¹¤ë¡£  ¥·¥ê¥¢¥ë¥Ê¥ó¥Ð¤òÀ¸À®¤¹¤ë¡£
   */
   /*&en
   next_serial() generates a serial number for ox message.
   */
   /*&common
   
 4.5  4.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  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);
   
 ox ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£  */
   /*&ja
   OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¡£
   */
   
   /*&ja
   
   5. OX expression ¥Ñ¡¼¥µ
   
   */
   /*&en
   
   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);
   
   */
   /*&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
   
   5.2 Initializing
   */
   /*&ja
   
   5.2 ½é´ü²½
   */
   /*&common
   
   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();
   
   */
   /*&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. ÉÕ°¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ
   
   */
   /*&en
   
   7. 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
   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 ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹.
   
   */
   

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.11

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