[BACK]Return to cmo-basic0.tex CVS log [TXT][DIR] Up to [local] / OpenXM / doc / OpenXM-specs

Annotation of OpenXM/doc/OpenXM-specs/cmo-basic0.tex, Revision 1.3

1.3     ! noro        1: %% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic0.tex,v 1.2 2000/01/24 02:48:24 noro Exp $
1.2       noro        2: //&jp \section{CMO Primitive の object}
                      3: //&eg \section{CMO Primitive object}
                      4: \label{sec:basic0}
1.1       noro        5: /*&jp
1.2       noro        6: CMO (Common Mathematical Object format) グループ Primitive の Object は,
1.1       noro        7: ローレベルのデータ型, {\tt int} , {\tt string}
                      8: などに対応する object である.
                      9: この CMO はすべての OpenXM が実装していると仮定される.
1.2       noro       10: この節では, イントロダクションとして, グループ Primitive に属する CMObject
1.1       noro       11: (Common Mathematical Object) を形式的な方法をつかわず導入しよう.
                     12: */
                     13: /*&eg
1.2       noro       14: Objects in CMO (Common Mathematical Object format) group Primitive
1.1       noro       15: are primitive data such as {\tt int}, {\tt string}.
                     16: All OpenXM compliant systems should implement all data types
1.2       noro       17: in the group Primitive.
1.1       noro       18: In this section, as an introduction, we will introduce
1.2       noro       19: CMObject (Common Mathematical Object) of the group Primitive without
1.1       noro       20: using the Backus-Nauer form.
                     21: */
                     22: /*&jp
                     23: このグループの正式な名前は,
1.2       noro       24: CMObject/Primitive  である.
1.1       noro       25: 以下, {\tt int32} で2の補数表現された
                     26: 32 bit integer をあらわす
                     27: (これはよく使われる計算機での C 言語の int の内部表現).
                     28: {\tt byte} で 8 bit データをあらわす.
                     29: */
                     30: /*&eg
                     31: The canonical name of this group is
1.2       noro       32: CMObject/Primitive.
1.1       noro       33: In the sequel,
                     34: {\tt int32} means the signed 32 bit integer expressed by two's complement
                     35: (internal expressions of {\tt int} of the language C usually use
                     36: this expression).
                     37: {\tt byte} means 8 bit data.
                     38: */
                     39:
                     40: //&C
                     41: /*&jp
                     42: CMObject の TCP/IP 用の実装では,
                     43: CMO の object は \\
                     44: \begin{tabular}{|c|c|}
                     45: \hline
                     46: {\tt cmo\_tag}& {\tt cmo\_body} \\
                     47: \hline
                     48: \end{tabular} \\
                     49: なる形をしている.
                     50: ここで, {\tt cmo\_tag} は, 正の
                     51: {\tt int32} で表現するものと規約する.
                     52: */
                     53: /*&eg
                     54: In our encoding of the CMO's for TCP/IP,
                     55: any CMObject consists of a tag and a body: \\
                     56: \begin{tabular}{|c|c|}
                     57: \hline
                     58: {\tt cmo\_tag}& {\tt cmo\_body} \\
                     59: \hline
                     60: \end{tabular} \\
                     61: {\tt cmo\_tag} should be given by a positive
                     62: {\tt int32}.
                     63: */
                     64:
                     65: /*&C
                     66:
                     67: */
                     68: /*&jp
                     69: {\tt cmo\_tag} は object のタイプをあらわすタグであり,
                     70: 以下のように決めている.
                     71: */
1.2       noro       72: //&eg The following is a list of tags of CMObject/Primitive.
1.1       noro       73: /*&C
                     74: @../SSkan/plugin/cmotag.h
                     75: \begin{verbatim}
                     76: #define LARGEID  0x7f000000
                     77: #define CMO_ERROR2 (LARGEID+2)
                     78: #define CMO_NULL   1
                     79: #define CMO_INT32  2
                     80: #define CMO_DATUM  3
                     81: #define CMO_STRING 4
                     82: #define CMO_MATHCAP 5
                     83: #define CMO_LIST 17
                     84: \end{verbatim}
                     85: */
                     86:
                     87: /*&jp
                     88: 以下, 各 object の フォーマットを説明する.
                     89: サーバ, クライアントはすべての object の CMO 形式をサポートする必要はないが,
                     90: {\tt CMO\_ERROR2}, {\tt CMO\_NULL},
                     91: {\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_MATHCAP}, {\tt CMO\_LIST}
                     92: は最も基本的なデータであり,
                     93: また全てのサーバ, クライアントが実装すべき CMO データである.
                     94: */
                     95: /*&eg
                     96: We will explain each object format.
                     97: Servers and clients do not need to implement all CMO's.
                     98: However,
                     99: {\tt CMO\_ERROR2}, {\tt CMO\_NULL},
                    100: {\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_MATHCAP}, {\tt CMO\_LIST}
                    101: are primitive data and
                    102: all servers and clients have to implement them.
                    103: */
                    104:
                    105: /*&C
                    106:
                    107: \medbreak \noindent
                    108: */
                    109: //&jp CMObject Error2 は \\
                    110: //&eg CMObject Error2 is of the form \\
                    111: /*&C
                    112: \begin{tabular}{|c|c|}
                    113: \hline
                    114: {\tt int32 CMO\_ERROR2} & {\sl CMObject} {\rm ob} \\
                    115: \hline
                    116: \end{tabular} \\
                    117: */
                    118: /*&jp
                    119: なる形で表現する.
                    120: エラーの時に push する object であり, {\it CMObject} ob の
                    121: 部分に詳細なエラー情報がはいる.
                    122: ob はリストであり,  TCP/IP によるストリーム型接続の場合,
                    123: 最初の成分はエラーを起こした OX メッセージ(後述)
                    124: のシリアル番号でないといけない.
                    125: シリアル番号は Integer32 で表現する.
1.3     ! noro      126:
        !           127: \noindent
        !           128: Remark: 歴史的な理由により, エラーオブジェクトの CMO タグは {\it
        !           129: CMO\_ERROR2} と名付けられている. 次の版の仕様書では {\tt CMO\_ERROR}
        !           130: に変更する予定である.
1.1       noro      131: */
                    132: /*&eg
                    133: It is an object used when a server makes an error.
                    134: {\it CMObject} ob carries error informations.
                    135: The instance ob is a list and in case of a stream connection like TCP/IP
                    136: the first element must be the serial number of the OX message
                    137: that caused the error.
                    138: The serial number is given by the data type Integer32.
1.3     ! noro      139:
        !           140: \noindent
        !           141: Remark: For a historical reason the CMO tag of the error object is
        !           142: named {\tt CMO\_ERROR2}. In the next vesion of OpenXM specification
        !           143: we wll rename it {\tt CMO\_ERROR}.
1.1       noro      144: */
                    145:
                    146: /*&C
                    147:
                    148: \medbreak \noindent
                    149: */
                    150:
                    151: //&jp CMObject Null は \\
                    152: //&eg CMObject Null has the format \\
                    153: /*&C
                    154: \begin{tabular}{|c|c|}
                    155: \hline
                    156: {\tt int32 CMO\_NULL}  \\
                    157: \hline
                    158: \end{tabular} \\
                    159: */
                    160: /*&jp
                    161: なる形で表現する.
                    162: */
                    163:
                    164: /*&C
                    165:
                    166: \noindent
                    167: */
                    168:
                    169: //&jp 32 bit integer n は CMObject としては Integer32 と呼ばれ, \\
                    170: //&eg 32 bit integer n is called Integer32 as a CMObject and has the format \\
                    171: /*&C
                    172: \begin{tabular}{|c|c|}
                    173: \hline
                    174: {\tt int32 CMO\_INT32}& {\tt int32} {\rm n}  \\
                    175: \hline
                    176: \end{tabular} \\
                    177: */
                    178: //&jp なる形で表現する.
                    179:
                    180: /*&C
                    181:
                    182: \medbreak \noindent
                    183: */
                    184:
                    185:
                    186: //&jp 長さ n の バイト列 data は CMObject としては, Datum 型とよばれ \\
                    187: //&eg A byte array of the length n is called Datum as a CMObject and has the format \\
                    188: /*&C
                    189: \begin{tabular}{|c|c|c|c|}
                    190: \hline
                    191: {\tt int32 CMO\_DATUM}& {\tt int32} {\rm n} & {\tt byte} {\rm  data[0]}
                    192: & {\tt byte} {\rm  data[1]} \\
                    193: \hline
                    194: $\cdots$ & {\tt byte} {\rm  data[n-1]} \\
                    195: \cline{1-2}
                    196: \end{tabular} \\
                    197: */
                    198: //&jp と表現する.
                    199:
                    200: /*&C
                    201:
                    202: \noindent
                    203: */
                    204:
                    205: //&jp 長さ n の 文字列 data は, CMObject としては, Cstring 型とよばれ \\
                    206: //&eg String of n bytes is called Cstring as CMObject and has the format \\
                    207: /*&C
                    208: \begin{tabular}{|c|c|c|c|}
                    209: \hline
                    210: {\tt int32 CMO\_STRING}& {\tt int32} {\rm n} & {\tt byte} {\rm data[0]}
                    211: & {\tt byte} {\rm data[1]}  \\
                    212: \hline
                    213: $\cdots$ & {\tt byte} {\rm data[n-1]} \\
                    214: \cline{1-2}
                    215: \end{tabular} \\
                    216: */
                    217: /*&jp
                    218: と表現する.  C 言語で普通用いられる, 文字列のおわりの {\tt 0} は文字列
                    219: に含めない.
                    220: */
                    221:
                    222: /*&C
                    223:
                    224: \noindent
                    225: */
                    226: //&jp CMObject Mathcap は \\
                    227: //&eg CMObject Mathcap  has the format \\
                    228: /*&C
                    229: \begin{tabular}{|c|c|}
                    230: \hline
                    231: {\tt int32 CMO\_MATHCAP} & {\it CMObject} {\rm ob} \\
                    232: \hline
                    233: \end{tabular} \\
                    234: */
                    235: /*&jp
                    236: なる形で表現する.
                    237: {\tt ob} はリストであり少なくとも3つの要素をもつ.
                    238: 0 番目の要素は, Integer32 で表した OpenXM protocol version number と,
                    239: Cstring で表したシステム名, Server version, CPU type, その他の情報
                    240: のリストである.
                    241: 1 番目の要素は, システム xxx が扱うことの可能な
                    242: SM タグを, Integer32 で表現したものを集めたリストである.
                    243: 3 番目の要素は, システム xxx があつかうことの可能な
                    244: データ形式をあつめたリストである.
                    245: 詳細は mathcap の節で説明する.
                    246: */
                    247: /*&eg
                    248: ob is a list of which length is more than or equal to three.
                    249: The first element is a list of
                    250: OpenXM protocol version number in Integer32,
                    251: the server name in Cstring,
                    252: the server version and CPU type in Cstring,
                    253: and extra informations.
                    254: The second element is a list of SM tags in Integer 32.
                    255: The third element is a list of data type tags which the server or the client
                    256: can understand.
                    257: The details will be explained in the section on mathcap.
                    258: */
                    259:
                    260: /*&C
                    261:
                    262: \medbreak \noindent
                    263: */
                    264: //&jp 長さ m のリストは \\
                    265: //&eg A list of the length m has the form \\
                    266: /*&C
                    267: \begin{tabular}{|c|c|c|c|c|}
                    268: \hline
                    269: {\tt int32 CMO\_LIST}& {\tt int32} {\rm m} & {\tt CMObject}\, ob[0] & $\cdots$ &
                    270: {\tt CMObject}\, ob[$m-1$] \\
                    271: \hline
                    272: \end{tabular}\\
                    273: */
                    274: //&jp で表現する.
                    275:
                    276:

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