next up previous contents
: CMO の形式的表現方法 : Open XM の設計と実装: クライアントサーバモデルと数学共通表現 : はじめに   目次


CMO Primitive object

CMO (Common Mathematical Object format) グループ Primitive の Object は, ローレベルのデータ型, int , string などに対応する object である. この CMO はすべての OpenXM が実装していると仮定される. この節では, イントロダクションとして, グループ Primitive に属する CMObject (Common Mathematical Object) を形式的な方法をつかわず導入しよう.

このグループの正式な名前は, CMObject/Primitive である. 以下, int32 で2の補数表現された 32 bit integer をあらわす (これはよく使われる計算機での C 言語の int の内部表現). byte で 8 bit データをあらわす.

CMObject の TCP/IP 用の実装では, CMO の object は
cmo_tag cmo_body

なる形をしている. ここで, cmo_tag は, 正の int32 で表現するものと規約する.

cmo_tag は object のタイプをあらわすタグであり, 以下のように決めている.

@../SSkan/plugin/cmotag.h

#define LARGEID  0x7f000000   /* 2130706432 */
#define CMO_ERROR2 (LARGEID+2)
#define CMO_NULL   1
#define CMO_INT32  2
#define CMO_DATUM  3
#define CMO_STRING 4
#define CMO_MATHCAP 5
#define CMO_LIST 17

以下, 各 object の フォーマットを説明する. サーバ, クライアントはすべての object の CMO 形式をサポートする必要はないが, CMO_ERROR2, CMO_NULL, CMO_INT32, CMO_STRING, CMO_MATHCAP, CMO_LIST は最も基本的なデータであり, また全てのサーバ, クライアントが実装すべき CMO データである.

CMObject Error2 は
int32 CMO_ERROR2 CMObject ob

なる形で表現する. エラーの時に push する object であり, CMObject ob の 部分に詳細なエラー情報がはいる. ob はリストであり, TCP/IP によるストリーム型接続の場合, 最初の成分はエラーを起こした OX メッセージ(後述) のシリアル番号でないといけない. シリアル番号は Integer32 で表現する.

Remark: 歴史的な理由により, エラーオブジェクトの CMO タグは CMO_ERROR2 と名付けられている. 次の版の仕様書では CMO_ERROR に変更する予定である.

CMObject Null は
int32 CMO_NULL  

なる形で表現する.

32 bit integer n は CMObject としては Integer32 と呼ばれ,
int32 CMO_INT32 int32 n

なる形で表現する.

長さ n の バイト列 data は CMObject としては, Datum 型とよばれ
int32 CMO_DATUM int32 n byte data[0] byte data[1]
$\cdots$ byte data[n-1]    

と表現する.

長さ n の 文字列 data は, CMObject としては, Cstring 型とよばれ
int32 CMO_STRING int32 n byte data[0] byte data[1]
$\cdots$ byte data[n-1]    

と表現する. C 言語で普通用いられる, 文字列のおわりの 0 は文字列 に含めない.

CMObject Mathcap は
int32 CMO_MATHCAP CMObject ob

なる形で表現する. ob はリストであり少なくとも3つの要素をもつ. 0 番目の要素は, Integer32 で表した OpenXM protocol version number と, Cstring で表したシステム名, Server version, CPU type, その他の情報 のリストである. 1 番目の要素は, システム xxx が扱うことの可能な SM タグを, Integer32 で表現したものを集めたリストである. 3 番目の要素は, システム xxx があつかうことの可能な データ形式をあつめたリストである. 詳細は mathcap の節 5.1.2 で説明する.

長さ m のリストは
int32 CMO_LIST int32 m CMObject ob[0] $\cdots$ CMObject ob[$m-1$]

で表現する.


next up previous contents
: CMO の形式的表現方法 : Open XM の設計と実装: クライアントサーバモデルと数学共通表現 : はじめに   目次
Nobuki Takayama 平成15年5月13日