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

1.8     ! takayama    1: %% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic0.tex,v 1.7 2000/09/23 01:05:57 takayama Exp $
1.5       takayama    2: //&jp \section{CMO Primitive object}
1.2       noro        3: //&eg \section{CMO Primitive object}
                      4: \label{sec:basic0}
1.1       noro        5: /*&jp
1.8     ! takayama    6: CMO (Common Mathematical Object format) グループ Primitive の Object は,
        !             7: ローレベルのデータ型, {\tt int} , {\tt string}
        !             8: などに対応する object である.
        !             9: この CMO はすべての OpenXM が実装していると仮定される.
        !            10: この節では, イントロダクションとして, グループ Primitive に属する CMObject
        !            11: (Common Mathematical Object) を形式的な方法をつかわず導入しよう.
1.1       noro       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
1.8     ! takayama   23: このグループの正式な名前は,
        !            24: CMObject/Primitive  である.
        !            25: 以下, {\tt int32} で2の補数表現された
        !            26: 32 bit integer をあらわす
        !            27: (これはよく使われる計算機での C 言語の int の内部表現).
        !            28: {\tt byte} で 8 bit データをあらわす.
1.1       noro       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
1.8     ! takayama   42: CMObject の TCP/IP 用の実装では,
        !            43: CMO の object は \\
1.1       noro       44: \begin{tabular}{|c|c|}
                     45: \hline
                     46: {\tt cmo\_tag}& {\tt cmo\_body} \\
                     47: \hline
                     48: \end{tabular} \\
1.8     ! takayama   49: なる形をしている.
        !            50: ここで, {\tt cmo\_tag} は, 正の
        !            51: {\tt int32} で表現するものと規約する.
1.1       noro       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
1.8     ! takayama   69: {\tt cmo\_tag} は object のタイプをあらわすタグであり,
        !            70: 以下のように決めている.
1.1       noro       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}
1.4       takayama   76: #define LARGEID  0x7f000000   /* 2130706432 */
1.1       noro       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
1.8     ! takayama   88: 以下, 各 object の フォーマットを説明する.
        !            89: サーバ, クライアントはすべての object の CMO 形式をサポートする必要はないが,
1.1       noro       90: {\tt CMO\_ERROR2}, {\tt CMO\_NULL},
                     91: {\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_MATHCAP}, {\tt CMO\_LIST}
1.8     ! takayama   92: は最も基本的なデータであり,
        !            93: また全てのサーバ, クライアントが実装すべき CMO データである.
1.1       noro       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: */
1.8     ! takayama  109: //&jp CMObject Error2 は \\
1.1       noro      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
1.8     ! takayama  119: なる形で表現する.
        !           120: エラーの時に push する object であり, {\it CMObject} ob の
        !           121: 部分に詳細なエラー情報がはいる.
        !           122: ob はリストであり,  TCP/IP によるストリーム型接続の場合,
        !           123: 最初の成分はエラーを起こした OX メッセージ(後述)
        !           124: のシリアル番号でないといけない.
        !           125: シリアル番号は Integer32 で表現する.
1.3       noro      126:
                    127: \noindent
1.8     ! takayama  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.
1.6       takayama  135: The instance ob is a list and, in case of a stream connection like TCP/IP,
1.1       noro      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
1.7       takayama  142: named {\tt CMO\_ERROR2}. In the next version of OpenXM specification
1.6       takayama  143: we may rename it {\tt CMO\_ERROR}.
1.1       noro      144: */
                    145:
                    146: /*&C
                    147:
                    148: \medbreak \noindent
                    149: */
                    150:
1.8     ! takayama  151: //&jp CMObject Null は \\
1.1       noro      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
1.8     ! takayama  161: なる形で表現する.
1.1       noro      162: */
                    163:
                    164: /*&C
                    165:
                    166: \noindent
                    167: */
                    168:
1.8     ! takayama  169: //&jp 32 bit integer n は CMObject としては Integer32 と呼ばれ, \\
1.1       noro      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: */
1.8     ! takayama  178: //&jp なる形で表現する.
1.1       noro      179:
                    180: /*&C
                    181:
                    182: \medbreak \noindent
                    183: */
                    184:
                    185:
1.8     ! takayama  186: //&jp 長さ n の バイト列 data は CMObject としては, Datum 型とよばれ \\
1.1       noro      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: */
1.8     ! takayama  198: //&jp と表現する.
1.1       noro      199:
                    200: /*&C
                    201:
                    202: \noindent
                    203: */
                    204:
1.8     ! takayama  205: //&jp 長さ n の 文字列 data は, CMObject としては, Cstring 型とよばれ \\
1.1       noro      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
1.8     ! takayama  218: と表現する.  C 言語で普通用いられる, 文字列のおわりの {\tt 0} は文字列
        !           219: に含めない.
1.1       noro      220: */
                    221:
                    222: /*&C
                    223:
                    224: \noindent
                    225: */
1.8     ! takayama  226: //&jp CMObject Mathcap は \\
1.1       noro      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
1.8     ! takayama  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 の節 \ref{subsubsection:mathcap} で説明する.
1.1       noro      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.
1.6       takayama  257: The details will be explained in the section on mathcap \ref{subsubsection:mathcap}.
1.1       noro      258: */
                    259:
                    260: /*&C
                    261:
                    262: \medbreak \noindent
                    263: */
1.8     ! takayama  264: //&jp 長さ m のリストは \\
1.1       noro      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: */
1.8     ! takayama  274: //&jp で表現する.
1.1       noro      275:

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