myGroup > myProject
 

umsCodeGenerator

English

umsCodeGenerator とは?

umsCodeGenerator は、mappingSchema の処理系です。 mapping definition を入力として、 UMS の定義に従って書かれたデータとプログラミング言語とのマッピングを行い、 データをencode/decodeするためのソースコードを生成します。

このツールは、 mappingSchema の文法体系を曖昧さなく 策定する補助として UMS group 自身が開発を行っています。 mappingSchema の文法は、このツールの進化とともに、より汎用でシンプルなものに成長してきました。

umsCodeGenerator の処理系の全体像

Note
以前は umsCodeGenerator と tableTools が並存しており、 それぞれで実現できる機能が異なっていましたが、 umsCodeGenerator の version 0.4 で双方の機能が統合されました。 UMS group 自身で作成してきた処理系の経緯は'Brief History' に書かれています。

対象とするデータ構造

tableToolsは、その名のとおり「テーブル構造のデータ」を扱うことを対象としています。 具体的には、テキストでテーブル構造を表す形式として、次のような","(カンマ)を区切り文字とした CSV構造が広く利用されています。

csvdata1,11,1.2345

また、XMLでテーブル構造を表すと、例えば次のようになるでしょう。

<Record>
 <strData>xmldata1</strData>
 <intData>11</intData>
 <doubleData>1.2345</doubleData>
</Record>

以上のように、非常にシンプルな構造ですが、データ保存/交換など、多くの場面で利用されています。 tableToolsは、こうしたテーブル構造のデータと、各種プログラミング言語とのマッピング (将来的には、データ構造同士のマッピング)を行うことで、システム開発者が新たにプログラムを 実装する際の負荷を軽減し、システム全体で開発効率の向上をはかることを目標としています。

データ−プログラミング言語間のマッピング

現在サポートされているマッピングは以下のとおりです。

Java C C++ Perl
Text -- --
Binary -- --
XML -- -- -- --

上のマトリックスにおいて、「○」になっているものが、マッピングがサポートされている 組み合わせであることを示します。 また、「○」とある組み合わせは、双方向(decode:データ→プログラミング言語、 encode:プログラミング言語→データ)の変換を行うことが可能です。

利用可能なコンテナ−シーケンシャルデータ

Mapping definition で、 利用可能な要素のうちデータの空間に含まれるもの (コンテナ) は次のとおりです。

Text, Binary 文書
XML 文書
共通

利用可能なコンテナ−プログラミング言語

プロトタイプ宣言では以下が利用可能です。

Java
class / function / arg / return / exception / array / var
C
package / function / arg / return / struct / array / var
C++
Perl

また、マッピングでは以下の利用可能なコンテナが言語によらず利用可能です。 今のところ言語固有なコンテナは実装されていません。

共通

利用可能なコンテナ−共通部分

データ及び言語側から、共通に利用可能なコンテナは次のとおりです。

  • data
  • value (現バージョンでは、シーケンシャルデータ側のみ利用可能)

encodingLibrary

umsCodeGenerator では、以下の encode および W3C datatype の サブセットをサポートするライブラリ (encodingLibrary) がバンドルされています。

encode W3C
datatype
Language
Java C C++ Perl
txt string String char * ----
token String char * ----
byte byte int8_t ----
short short int16_t ----
int int int32_t ----
long long int64_t ----
unsignedByte short uint32_t----
unsignedShortint uint32_t----
unsignedInt long uint32_t----
unsignedLong BigIntegeruint32_t----
double double double ----
signed byte byte int8_t ----
short short int16_t ----
int int int32_t ----
long long int64_t ----
unsigned unsignedByte short uint32_t----
unsignedShortint uint32_t----
unsignedInt long uint32_t----
unsignedLong BigIntegeruint32_t----
ieee754double float float float ----
double double double ----

サンプルプログラム

サンプルプログラムやツールのソースコードは以下の標準に従うよう配慮しています。

  • JAVA: JAVA2 1.4
  • C言語: ISO9899 (C99)