ODM コードおよび出力の例
次の「Fictional_Characters」、「Friend_Table」、および「Enemy_Table」のオブジェクト・クラスと関係の表は、ここのセクションのコード例で作成したオブジェクト・クラスおよびオブジェクト を示しています。
Story_Star (char) | Birthday (char) | Age (short) | Friends_of (link) | Enemies_of (link) | Do_This (method) |
---|---|---|---|---|---|
Cinderella | Once upon a time | 19 | Cinderella | Cinderella | echo Cleans House |
Snow White | Once upon a time | 18 | Snow White | Snow White | echo Cleans House |
Friend_of (char) | Friend (char) |
---|---|
Cinderella | Fairy Godmother |
Cinderella | mice |
Snow White | Sneezy |
Snow White | Sleepy |
Cinderella | Prince |
Snow White | Happy |
Enemy_of (char) | Enemy (char) |
---|---|
Cinderella | midnight |
Cinderella | Mean Stepmother |
Snow White | Mean Stepmother |
オブジェクト・クラスを作成するための ODM 入力コード例
次の MyObjects.cre ファイルのコード例では、 odmcreate コマンドで入力ファイルとして使用される際に 3 つのオブジェクト・クラスが作成されます。
* MyObjects.cre
* An input file for ODM create utilities.
* Creates three object classes:
* Friend_Table
* Enemy_Table
* Fictional_Characters
class Friend_Table {
char Friend_of[20];
char Friend[20];
};
class Enemy_Table {
char Enemy_of[20];
char Enemy[20];
};
class Fictional_Characters {
char Story_Star[20];
char Birthday[20];
short Age;
link Friend_Table Friend_Table Friend_of Friends_of;
link Enemy_Table Enemy_Table Enemy_of Enemies_of;
method Do_This;
};
* End of MyObjects.cre input file for ODM create utilities. *
Fictional_Characters オブジェクト・クラスには、 6 つのディスクリプターが入っています。
- それぞれディスクリプター・タイプが char で最大長が 20 文字 の、Story_Star および Birthday。
- ディスクリプター・タイプが short (短) の Age。
- Friends_of
および Enemies_of は両方ともリンク・クラスに属し、
事前に定義された 2 つのオブジェクト・クラスにリンクします。
注: オブジェクト・クラス・リンクは 2 回繰り返されます。
- ディスクリプター・タイプがメソッド (method) である Do_This。
ODM で必要なオブジェクト・クラス・ファイルを作成するには、 odmcreate コマンドを用いて、このコードの入ったファイルを処理しなければなりません。
オブジェクト・クラス定義のための ODM 出力例
MyObjects.cre ファイルのコードを odmcreate コマンドで処理すると、.h ファイルに次の構造体が生成されます。
* MyObjects.h
* The file output from ODM processing of the MyObjects.cre input
* file. Defines structures for the three object classes:
* Friend_Table
* Enemy_Table
* Fictional_Characters
#include <odmi.h>
struct Friend_Table {
long _id; * unique object id within object class *
long _reserved; * reserved field *
long _scratch; * extra field for application use *
char Friend_of[20];
char Friend[20];
};
#define Friend_Table_Descs 2
extern struct Class Friend_Table_CLASS[];
#define get_Friend_Table_list(a,b,c,d,e) (struct Friend_Table * )odm_get_list (a,b,c,d,e)
struct Enemy_Table {
long _id;
long _reserved;
long _scratch;
char Enemy_of[20];
char Enemy[20];
};
#define Enemy_Table_Descs 2
extern struct Class Enemy_Table_CLASS[];
#define get_Enemy_Table_list(a,b,c,d,e) (struct Enemy_Table * )odm_get_list (a,b,c,d,e)
struct Fictional_Characters {
long _id;
long _reserved;
long _scratch;
char Story_Star[20];
char Birthday[20];
short Age;
struct Friend_Table *Friends_of; * link *
struct listinfo *Friends_of_info; * link *
char Friends_of_Lvalue[20]; * link *
struct Enemy_Table *Enemies_of; * link *
struct listinfo *Enemies_of_info; * link *
char Enemies_of_Lvalue[20]; * link *
char Do_This[256]; * method *
};
#define Fictional_Characters_Descs 6
extern struct Class Fictional_Characters_CLASS[];
#define get_Fictional_Characters_list(a,b,c,d,e) (struct Fictional_Characters * )odm_get_list (a,b,c,d,e)
* End of MyObjects.h structure definition file output from ODM * processing.
オブジェクト・クラスにオブジェクトを追加するための ODM コード例
次のコードを odmadd コマンドで処理すると、MyObjects.cre 入力ファイルを処理して作成されるオブジェクト・クラスにオブジェクトを組み入れることができます。
* MyObjects.add
* An input file for ODM add utilities.
* Populates three created object classes:
* Friend_Table
* Enemy_Table
* Fictional_Characters
Fictional_Characters:
Story_Star = "Cinderella" #a comment for the MyObjects.add file.
Birthday = "Once upon a time"
Age = 19
Friends_of = "Cinderella"
Enemies_of = "Cinderella"
Do_This = "echo Cleans house"
Fictional_Characters:
Story_Star = "Snow White"
Birthday = "Once upon a time"
Age = 18
Friends_of = "Snow White"
Enemies_of = "Snow White"
Do_This = "echo Cleans house"
Friend_Table:
Friend_of = "Cinderella"
Friend = "Fairy Godmother"
Friend_Table:
Friend_of = "Cinderella"
Friend = "mice"
Friend_Table:
Friend_of = "Snow White"
Friend = "Sneezy"
Friend_Table:
Friend_of = "Snow White"
Friend = "Sleepy"
Friend_Table:
Friend_of = "Cinderella"
Friend = "Prince"
Friend_Table:
Friend_of = "Snow White"
Friend = "Happy"
Enemy_Table:
Enemy_of = "Cinderella"
Enemy = "midnight"
Enemy_Table:
Enemy_of = "Cinderella"
Enemy = "Mean Stepmother"
Enemy_Table:
Enemy_of = "Snow White"
Enemy = "Mean Stepmother"
* End of MyObjects.add input file for ODM add utilities. *
注: 上記のコード例の * (アスタリスク) または # (ポンド記号) コメントは、 オブジェクト・ファイルには入りません。 行の先頭に原因があってその行がコメント化された場合、そのコマンドはオブジェクト・ファイルには入りません。 コメントは、ファイルに組み込まれ、 " " (二重引用符) で囲まれた場合は、文字列として扱われます。