version 1.1.1.1, 2000/01/20 08:52:46 |
version 1.8, 2020/03/14 01:21:56 |
|
|
%% $OpenXM$ |
%% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic0.tex,v 1.7 2000/09/23 01:05:57 takayama Exp $ |
//&jp \section{CMO Basic0 の object} |
//&jp \section{CMO Primitive object} |
//&eg \section{CMO Basic0 object} |
//&eg \section{CMO Primitive object} |
|
\label{sec:basic0} |
/*&jp |
/*&jp |
CMO (Common Mathematical Object format) グループ Basic0 の Object は, |
CMO (Common Mathematical Object format) 違若 Primitive Object , |
ローレベルのデータ型, {\tt int} , {\tt string} |
若若水, {\tt int} , {\tt string} |
などに対応する object である. |
絲上 object с. |
この CMO はすべての OpenXM が実装していると仮定される. |
CMO 鴻 OpenXM 絎茖篁絎. |
この節では, イントロダクションとして, グループ Basic0 に属する CMObject |
膀с, ゃ潟激с潟, 違若 Primitive 絮 CMObject |
(Common Mathematical Object) を形式的な方法をつかわず導入しよう. |
(Common Mathematical Object) 綵√号ゃ絨ャ. |
*/ |
*/ |
/*&eg |
/*&eg |
Objects in CMO (Common Mathematical Object format) group Basic0 |
Objects in CMO (Common Mathematical Object format) group Primitive |
are primitive data such as {\tt int}, {\tt string}. |
are primitive data such as {\tt int}, {\tt string}. |
All OpenXM compliant systems should implement all data types |
All OpenXM compliant systems should implement all data types |
in the group Basic0. |
in the group Primitive. |
In this section, as an introduction, we will introduce |
In this section, as an introduction, we will introduce |
CMObject (Common Mathematical Object) of the group Basic0 without |
CMObject (Common Mathematical Object) of the group Primitive without |
using the Backus-Nauer form. |
using the Backus-Nauer form. |
*/ |
*/ |
/*&jp |
/*&jp |
このグループの正式な名前は, |
違若罩e, |
CMObject/Basic0 である. |
CMObject/Primitive с. |
以下, {\tt int32} で2の補数表現された |
篁ヤ, {\tt int32} 2茖域;憗 |
32 bit integer をあらわす |
32 bit integer |
(これはよく使われる計算機での C 言語の int の内部表現). |
(鋎帥荐膊罘с C 荐茯 int 茵). |
{\tt byte} で 8 bit データをあらわす. |
{\tt byte} 8 bit 若帥. |
*/ |
*/ |
/*&eg |
/*&eg |
The canonical name of this group is |
The canonical name of this group is |
CMObject/Basic0. |
CMObject/Primitive. |
In the sequel, |
In the sequel, |
{\tt int32} means the signed 32 bit integer expressed by two's complement |
{\tt int32} means the signed 32 bit integer expressed by two's complement |
(internal expressions of {\tt int} of the language C usually use |
(internal expressions of {\tt int} of the language C usually use |
Line 38 this expression). |
|
Line 39 this expression). |
|
|
|
//&C |
//&C |
/*&jp |
/*&jp |
CMObject の TCP/IP 用の実装では, |
CMObject TCP/IP 絎茖с, |
CMO の object は \\ |
CMO object \\ |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
\hline |
\hline |
{\tt cmo\_tag}& {\tt cmo\_body} \\ |
{\tt cmo\_tag}& {\tt cmo\_body} \\ |
\hline |
\hline |
\end{tabular} \\ |
\end{tabular} \\ |
なる形をしている. |
綵≪. |
ここで, {\tt cmo\_tag} は, 正の |
, {\tt cmo\_tag} , 罩c |
{\tt int32} で表現するものと規約する. |
{\tt int32} ц;憗荀靘. |
*/ |
*/ |
/*&eg |
/*&eg |
In our encoding of the CMO's for TCP/IP, |
In our encoding of the CMO's for TCP/IP, |
Line 65 any CMObject consists of a tag and a body: \\ |
|
Line 66 any CMObject consists of a tag and a body: \\ |
|
|
|
*/ |
*/ |
/*&jp |
/*&jp |
{\tt cmo\_tag} は object のタイプをあらわすタグであり, |
{\tt cmo\_tag} object 帥ゃ帥違с, |
以下のように決めている. |
篁ヤ羆冴. |
*/ |
*/ |
//&eg The following is a list of tags of CMObject/Basic0. |
//&eg The following is a list of tags of CMObject/Primitive. |
/*&C |
/*&C |
@../SSkan/plugin/cmotag.h |
@../SSkan/plugin/cmotag.h |
\begin{verbatim} |
\begin{verbatim} |
#define LARGEID 0x7f000000 |
#define LARGEID 0x7f000000 /* 2130706432 */ |
#define CMO_ERROR2 (LARGEID+2) |
#define CMO_ERROR2 (LARGEID+2) |
#define CMO_NULL 1 |
#define CMO_NULL 1 |
#define CMO_INT32 2 |
#define CMO_INT32 2 |
Line 84 any CMObject consists of a tag and a body: \\ |
|
Line 85 any CMObject consists of a tag and a body: \\ |
|
*/ |
*/ |
|
|
/*&jp |
/*&jp |
以下, 各 object の フォーマットを説明する. |
篁ヤ, object 若茯. |
サーバ, クライアントはすべての object の CMO 形式をサポートする必要はないが, |
泣若, ゃ≪潟鴻 object CMO 綵√泣若綽荀, |
{\tt CMO\_ERROR2}, {\tt CMO\_NULL}, |
{\tt CMO\_ERROR2}, {\tt CMO\_NULL}, |
{\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_MATHCAP}, {\tt CMO\_LIST} |
{\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_MATHCAP}, {\tt CMO\_LIST} |
は最も基本的なデータであり, |
堺若帥с, |
また全てのサーバ, クライアントが実装すべき CMO データである. |
障泣若, ゃ≪潟絎茖鴻 CMO 若帥с. |
*/ |
*/ |
/*&eg |
/*&eg |
We will explain each object format. |
We will explain each object format. |
Line 105 all servers and clients have to implement them. |
|
Line 106 all servers and clients have to implement them. |
|
|
|
\medbreak \noindent |
\medbreak \noindent |
*/ |
*/ |
//&jp CMObject Error2 は \\ |
//&jp CMObject Error2 \\ |
//&eg CMObject Error2 is of the form \\ |
//&eg CMObject Error2 is of the form \\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
Line 115 all servers and clients have to implement them. |
|
Line 116 all servers and clients have to implement them. |
|
\end{tabular} \\ |
\end{tabular} \\ |
*/ |
*/ |
/*&jp |
/*&jp |
なる形で表現する. |
綵≪ц;憗. |
エラーの時に push する object であり, {\it CMObject} ob の |
若 push object с, {\it CMObject} ob |
部分に詳細なエラー情報がはいる. |
荅括完惹宴. |
ob はリストであり, TCP/IP によるストリーム型接続の場合, |
ob 鴻с, TCP/IP 鴻若・膓翫, |
最初の成分はエラーを起こした OX メッセージ(後述) |
若莎激 OX <祉若(緇菴) |
のシリアル番号でないといけない. |
激≪垩с. |
シリアル番号は Integer32 で表現する. |
激≪垩 Integer32 ц;憗. |
|
|
|
\noindent |
|
Remark: 罩翫兏宴, 若吾с CMO 帥違 {\it |
|
CMO\_ERROR2} 篁. 罨<篁罕吾с {\tt CMO\_ERROR} |
|
紊眼篋絎с. |
*/ |
*/ |
/*&eg |
/*&eg |
It is an object used when a server makes an error. |
It is an object used when a server makes an error. |
{\it CMObject} ob carries error informations. |
{\it CMObject} ob carries error informations. |
The instance ob is a list and in case of a stream connection like TCP/IP |
The instance ob is a list and, in case of a stream connection like TCP/IP, |
the first element must be the serial number of the OX message |
the first element must be the serial number of the OX message |
that caused the error. |
that caused the error. |
The serial number is given by the data type Integer32. |
The serial number is given by the data type Integer32. |
|
|
|
\noindent |
|
Remark: For a historical reason the CMO tag of the error object is |
|
named {\tt CMO\_ERROR2}. In the next version of OpenXM specification |
|
we may rename it {\tt CMO\_ERROR}. |
*/ |
*/ |
|
|
/*&C |
/*&C |
Line 137 The serial number is given by the data type Integer32. |
|
Line 148 The serial number is given by the data type Integer32. |
|
\medbreak \noindent |
\medbreak \noindent |
*/ |
*/ |
|
|
//&jp CMObject Null は \\ |
//&jp CMObject Null \\ |
//&eg CMObject Null has the format \\ |
//&eg CMObject Null has the format \\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
Line 147 The serial number is given by the data type Integer32. |
|
Line 158 The serial number is given by the data type Integer32. |
|
\end{tabular} \\ |
\end{tabular} \\ |
*/ |
*/ |
/*&jp |
/*&jp |
なる形で表現する. |
綵≪ц;憗. |
*/ |
*/ |
|
|
/*&C |
/*&C |
Line 155 The serial number is given by the data type Integer32. |
|
Line 166 The serial number is given by the data type Integer32. |
|
\noindent |
\noindent |
*/ |
*/ |
|
|
//&jp 32 bit integer n は CMObject としては Integer32 と呼ばれ, \\ |
//&jp 32 bit integer n CMObject Integer32 若違, \\ |
//&eg 32 bit integer n is called Integer32 as a CMObject and has the format \\ |
//&eg 32 bit integer n is called Integer32 as a CMObject and has the format \\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
Line 164 The serial number is given by the data type Integer32. |
|
Line 175 The serial number is given by the data type Integer32. |
|
\hline |
\hline |
\end{tabular} \\ |
\end{tabular} \\ |
*/ |
*/ |
//&jp なる形で表現する. |
//&jp 綵≪ц;憗. |
|
|
/*&C |
/*&C |
|
|
Line 172 The serial number is given by the data type Integer32. |
|
Line 183 The serial number is given by the data type Integer32. |
|
*/ |
*/ |
|
|
|
|
//&jp 長さ n の バイト列 data は CMObject としては, Datum 型とよばれ \\ |
//&jp 激 n ゃ data CMObject , Datum 違 \\ |
//&eg A byte array of the length n is called Datum as a CMObject and has the format \\ |
//&eg A byte array of the length n is called Datum as a CMObject and has the format \\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|c|c|} |
\begin{tabular}{|c|c|c|c|} |
Line 184 $\cdots$ & {\tt byte} {\rm data[n-1]} \\ |
|
Line 195 $\cdots$ & {\tt byte} {\rm data[n-1]} \\ |
|
\cline{1-2} |
\cline{1-2} |
\end{tabular} \\ |
\end{tabular} \\ |
*/ |
*/ |
//&jp と表現する. |
//&jp 茵憗. |
|
|
/*&C |
/*&C |
|
|
\noindent |
\noindent |
*/ |
*/ |
|
|
//&jp 長さ n の 文字列 data は, CMObject としては, Cstring 型とよばれ \\ |
//&jp 激 n 絖 data , CMObject , Cstring 違 \\ |
//&eg String of n bytes is called Cstring as CMObject and has the format \\ |
//&eg String of n bytes is called Cstring as CMObject and has the format \\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|c|c|} |
\begin{tabular}{|c|c|c|c|} |
Line 204 $\cdots$ & {\tt byte} {\rm data[n-1]} \\ |
|
Line 215 $\cdots$ & {\tt byte} {\rm data[n-1]} \\ |
|
\end{tabular} \\ |
\end{tabular} \\ |
*/ |
*/ |
/*&jp |
/*&jp |
と表現する. C 言語で普通用いられる, 文字列のおわりの {\tt 0} は文字列 |
茵憗. C 荐茯ф, 絖 {\tt 0} 絖 |
に含めない. |
. |
*/ |
*/ |
|
|
/*&C |
/*&C |
|
|
\noindent |
\noindent |
*/ |
*/ |
//&jp CMObject Mathcap は \\ |
//&jp CMObject Mathcap \\ |
//&eg CMObject Mathcap has the format \\ |
//&eg CMObject Mathcap has the format \\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|} |
\begin{tabular}{|c|c|} |
Line 222 $\cdots$ & {\tt byte} {\rm data[n-1]} \\ |
|
Line 233 $\cdots$ & {\tt byte} {\rm data[n-1]} \\ |
|
\end{tabular} \\ |
\end{tabular} \\ |
*/ |
*/ |
/*&jp |
/*&jp |
なる形で表現する. |
綵≪ц;憗. |
{\tt ob} はリストであり少なくとも3つの要素をもつ. |
{\tt ob} 鴻с絨3ゃ荀膣. |
0 番目の要素は, Integer32 で表した OpenXM protocol version number と, |
0 荀膣, Integer32 ц; OpenXM protocol version number , |
Cstring で表したシステム名, Server version, CPU type, その他の情報 |
Cstring ц;激鴻, Server version, CPU type, 篁 |
のリストである. |
鴻с. |
1 番目の要素は, システム xxx が扱うことの可能な |
1 荀膣, 激鴻 xxx 宴純 |
SM タグを, Integer32 で表現したものを集めたリストである. |
SM 帥違, Integer32 ц;憗鴻с. |
3 番目の要素は, システム xxx があつかうことの可能な |
3 荀膣, 激鴻 xxx ゃ純 |
データ形式をあつめたリストである. |
若水就綣ゃ鴻с. |
詳細は mathcap の節で説明する. |
荅括完 mathcap 膀 \ref{subsubsection:mathcap} ц. |
*/ |
*/ |
/*&eg |
/*&eg |
ob is a list of which length is more than or equal to three. |
ob is a list of which length is more than or equal to three. |
Line 243 and extra informations. |
|
Line 254 and extra informations. |
|
The second element is a list of SM tags in Integer 32. |
The second element is a list of SM tags in Integer 32. |
The third element is a list of data type tags which the server or the client |
The third element is a list of data type tags which the server or the client |
can understand. |
can understand. |
The details will be explained in the section on mathcap. |
The details will be explained in the section on mathcap \ref{subsubsection:mathcap}. |
*/ |
*/ |
|
|
/*&C |
/*&C |
|
|
\medbreak \noindent |
\medbreak \noindent |
*/ |
*/ |
//&jp 長さ m のリストは \\ |
//&jp 激 m 鴻 \\ |
//&eg A list of the length m has the form \\ |
//&eg A list of the length m has the form \\ |
/*&C |
/*&C |
\begin{tabular}{|c|c|c|c|c|} |
\begin{tabular}{|c|c|c|c|c|} |
Line 260 The details will be explained in the section on mathca |
|
Line 271 The details will be explained in the section on mathca |
|
\hline |
\hline |
\end{tabular}\\ |
\end{tabular}\\ |
*/ |
*/ |
//&jp で表現する. |
//&jp ц;憗. |
|
|
|
|