[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.2

1.2     ! noro        1: %% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic0.tex,v 1.1.1.1 2000/01/20 08:52:46 noro Exp $
        !             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 で表現する.
                    126: */
                    127: /*&eg
                    128: It is an object used when a server makes an error.
                    129: {\it CMObject} ob carries error informations.
                    130: The instance ob is a list and in case of a stream connection like TCP/IP
                    131: the first element must be the serial number of the OX message
                    132: that caused the error.
                    133: The serial number is given by the data type Integer32.
                    134: */
                    135:
                    136: /*&C
                    137:
                    138: \medbreak \noindent
                    139: */
                    140:
                    141: //&jp CMObject Null は \\
                    142: //&eg CMObject Null has the format \\
                    143: /*&C
                    144: \begin{tabular}{|c|c|}
                    145: \hline
                    146: {\tt int32 CMO\_NULL}  \\
                    147: \hline
                    148: \end{tabular} \\
                    149: */
                    150: /*&jp
                    151: なる形で表現する.
                    152: */
                    153:
                    154: /*&C
                    155:
                    156: \noindent
                    157: */
                    158:
                    159: //&jp 32 bit integer n は CMObject としては Integer32 と呼ばれ, \\
                    160: //&eg 32 bit integer n is called Integer32 as a CMObject and has the format \\
                    161: /*&C
                    162: \begin{tabular}{|c|c|}
                    163: \hline
                    164: {\tt int32 CMO\_INT32}& {\tt int32} {\rm n}  \\
                    165: \hline
                    166: \end{tabular} \\
                    167: */
                    168: //&jp なる形で表現する.
                    169:
                    170: /*&C
                    171:
                    172: \medbreak \noindent
                    173: */
                    174:
                    175:
                    176: //&jp 長さ n の バイト列 data は CMObject としては, Datum 型とよばれ \\
                    177: //&eg A byte array of the length n is called Datum as a CMObject and has the format \\
                    178: /*&C
                    179: \begin{tabular}{|c|c|c|c|}
                    180: \hline
                    181: {\tt int32 CMO\_DATUM}& {\tt int32} {\rm n} & {\tt byte} {\rm  data[0]}
                    182: & {\tt byte} {\rm  data[1]} \\
                    183: \hline
                    184: $\cdots$ & {\tt byte} {\rm  data[n-1]} \\
                    185: \cline{1-2}
                    186: \end{tabular} \\
                    187: */
                    188: //&jp と表現する.
                    189:
                    190: /*&C
                    191:
                    192: \noindent
                    193: */
                    194:
                    195: //&jp 長さ n の 文字列 data は, CMObject としては, Cstring 型とよばれ \\
                    196: //&eg String of n bytes is called Cstring as CMObject and has the format \\
                    197: /*&C
                    198: \begin{tabular}{|c|c|c|c|}
                    199: \hline
                    200: {\tt int32 CMO\_STRING}& {\tt int32} {\rm n} & {\tt byte} {\rm data[0]}
                    201: & {\tt byte} {\rm data[1]}  \\
                    202: \hline
                    203: $\cdots$ & {\tt byte} {\rm data[n-1]} \\
                    204: \cline{1-2}
                    205: \end{tabular} \\
                    206: */
                    207: /*&jp
                    208: と表現する.  C 言語で普通用いられる, 文字列のおわりの {\tt 0} は文字列
                    209: に含めない.
                    210: */
                    211:
                    212: /*&C
                    213:
                    214: \noindent
                    215: */
                    216: //&jp CMObject Mathcap は \\
                    217: //&eg CMObject Mathcap  has the format \\
                    218: /*&C
                    219: \begin{tabular}{|c|c|}
                    220: \hline
                    221: {\tt int32 CMO\_MATHCAP} & {\it CMObject} {\rm ob} \\
                    222: \hline
                    223: \end{tabular} \\
                    224: */
                    225: /*&jp
                    226: なる形で表現する.
                    227: {\tt ob} はリストであり少なくとも3つの要素をもつ.
                    228: 0 番目の要素は, Integer32 で表した OpenXM protocol version number と,
                    229: Cstring で表したシステム名, Server version, CPU type, その他の情報
                    230: のリストである.
                    231: 1 番目の要素は, システム xxx が扱うことの可能な
                    232: SM タグを, Integer32 で表現したものを集めたリストである.
                    233: 3 番目の要素は, システム xxx があつかうことの可能な
                    234: データ形式をあつめたリストである.
                    235: 詳細は mathcap の節で説明する.
                    236: */
                    237: /*&eg
                    238: ob is a list of which length is more than or equal to three.
                    239: The first element is a list of
                    240: OpenXM protocol version number in Integer32,
                    241: the server name in Cstring,
                    242: the server version and CPU type in Cstring,
                    243: and extra informations.
                    244: The second element is a list of SM tags in Integer 32.
                    245: The third element is a list of data type tags which the server or the client
                    246: can understand.
                    247: The details will be explained in the section on mathcap.
                    248: */
                    249:
                    250: /*&C
                    251:
                    252: \medbreak \noindent
                    253: */
                    254: //&jp 長さ m のリストは \\
                    255: //&eg A list of the length m has the form \\
                    256: /*&C
                    257: \begin{tabular}{|c|c|c|c|c|}
                    258: \hline
                    259: {\tt int32 CMO\_LIST}& {\tt int32} {\rm m} & {\tt CMObject}\, ob[0] & $\cdots$ &
                    260: {\tt CMObject}\, ob[$m-1$] \\
                    261: \hline
                    262: \end{tabular}\\
                    263: */
                    264: //&jp で表現する.
                    265:
                    266:

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