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