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>