Código de ejemplo y salida de ODM
Las siguientes tablas Fictional_Characters, Friend_Table y Enemy_Table Object Classes and Relationships listan las clases de objeto y los objetos creados por el código de ejemplo de esta sección.
| Story_Star (car) | Cumpleaños (char) | Edad (corta) | Friends_of (enlace) | Ados_de (enlace) | Do_This (método) |
|---|---|---|---|---|---|
| Cinderela | Érase una vez | 19 | Cinderela | Cinderela | echo Cleans House |
| Blanco nieve | Érase una vez | 18 | Blanco nieve | Blanco nieve | echo Cleans House |
| Amist_de (char) | Amigo (char) |
|---|---|
| Cinderela | Hada madrina |
| Cinderela | ratones |
| Blanco nieve | Estornudo |
| Blanco nieve | Somnoliento |
| Cinderela | Príncipe |
| Blanco nieve | Feliz |
| Enemy_of (car) | Enemigo (char) |
|---|---|
| Cinderela | medianoche |
| Cinderela | Madrastra media |
| Blanco nieve | Madrastra media |
Código de entrada de ejemplo ODM para crear clases de objeto
El código de ejemplo siguiente en el archivo MyObjects.cre crea tres clases de objeto cuando se utiliza como archivo de entrada con el mandato 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. *Los 2Fictional_Charactersclase de objeto contiene seis descriptores:
- Story_StaryBirthday,cada uno con un tipo de descriptor char y una longitud máxima de 20 caracteres.
- Agecon un tipo de descriptor corto.
- Friends_ofyEnemies_ofson de la clase de enlace y el enlace a las dos clases de objeto definidas anteriormente.Nota: El enlace de clase de objeto se repite dos veces.
- Do_Thiscon un tipo de descriptor de método.
Para generar los archivos de clase de objeto necesarios para ODM, el archivo que contiene este código debe procesarse con el mandato odmcreate
Salida de ejemplo de ODM para definiciones de clase de objeto
El proceso del código en el archivo MyObjects.cre con el mandato odmcreate genera las estructuras siguientes en un archivo .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.Código de ejemplo ODM para añadir objetos a clases de objeto
El mandato odmadd puede procesar el código siguiente para llenar las clases de objeto creadas por el proceso del archivo de entrada 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. *Nota: el comentario * (asterisco) o # (signo de almohadilla) en el código de ejemplo anterior no irá al archivo de objeto. Si el principio de la línea hace que la línea sea un comentario, el mandato no va en el archivo de objeto. El comentario se incluirá en el archivo y se tratará como una serie si se incluye dentro del "" (comillas dobles).