Exemple de code et de sortie ODM
Les tables Fictional_Characters, Friend_Table et Enemy_Table Object Classes and Relationships suivantes répertorient les classes d'objets et les objets créés par l'exemple de code de cette section.
| Story_Star (car) | Anniversaire (car) | Age (court) | Friends_of (lien) | Enemies_of (lien) | Do_This (méthode) |
|---|---|---|---|---|---|
| Cendrillon | Une fois sur une heure | 19 | Cendrillon | Cendrillon | echo Cleans Maison |
| Blanc neige | Une fois sur une heure | 18 | Blanc neige | Blanc neige | echo Cleans Maison |
| Friend_of (car) | Ami (car) |
|---|---|
| Cendrillon | Fée Parrain |
| Cendrillon | souris |
| Blanc neige | Atchoum |
| Blanc neige | Somnolent |
| Cendrillon | Le Prince |
| Blanc neige | Heureux |
| Enemy_of (car) | Ennemi (car) |
|---|---|
| Cendrillon | minuit |
| Cendrillon | Mère moyenne |
| Blanc neige | Mère moyenne |
ODM Exemple de code d'entrée pour la création de classes d'objets
L'exemple de code suivant dans le fichier MyObjects.cre crée trois classes d'objets lorsqu'il est utilisé comme fichier d'entrée avec la commande odmcreate :
* 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. *:NONE.Fictional_CharactersLa classe d'objets contient six descripteurs:
- Story_StaretBirthday,chacun avec un type de descripteur de caractère et une longueur maximale de 20 caractères.
- Ageavec un type de descripteur court.
- Friends_ofetEnemies_ofsont à la fois de la classe de lien et du lien vers les deux classes d'objets précédemment définies.Remarque: Le lien de classe d'objets est répété deux fois.
- Do_Thisavec un type de descripteur de méthode.
Pour générer les fichiers de classe d'objets requis par ODM, le fichier contenant ce code doit être traité avec la commande odmcreate .
Exemple de sortieODM pour des définitions de classe d'objets
Le traitement du code dans le fichier MyObjects.cre à l'aide de la commande odmcreate génère les structures suivantes dans un fichier .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.Exemple de codeODM pour ajouter des objets à des classes d'objets
Le code suivant peut être traité par la commande odmadd pour remplir les classes d'objets créées par le traitement du fichier d'entrée 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. *Remarque: Le commentaire * (astérisque) ou # (signe dièse) de l'exemple de code précédent ne sera pas placé dans le fichier objet. Si le début de la ligne entraîne la mise en commentaire de la ligne, la commande ne figure pas dans le fichier objet. Le commentaire sera inclus dans le fichier et traité comme une chaîne s'il est inclus dans "" (guillemets).