Código e saída de exemplo do ODM
As tabelas Fictional_Characters, Friend_Table e Enemy_Table Object Classes e Relacionamentos listam as classes de objetos e objetos criados pelo código de exemplo nesta seção.
| Story_Star (char) | Aniversário (char) | Idade (curta) | Amigos_de (link) | Inimigos_de (link) | Do_This (método) |
|---|---|---|---|---|---|
| Cinderela | Uma vez por vez | 19 | Cinderela | Cinderela | echo Limpa a casa |
| Branca de neve | Uma vez por vez | 18 | Branca de neve | Branca de neve | echo Limpa a casa |
| Friend_of (char) | Amigo (char) |
|---|---|
| Cinderela | Fada Madrinha |
| Cinderela | camundões |
| Branca de neve | Espirrado |
| Branca de neve | Sonolento |
| Cinderela | Príncipe |
| Branca de neve | Feliz |
| Inimigo_de (char) | Inimigo (char) |
|---|---|
| Cinderela | meia-noite |
| Cinderela | Madrasta Média |
| Branca de neve | Madrasta Média |
ODM código de entrada de exemplo para criar classes de objeto
O código de exemplo a seguir no arquivo MyObjects.cre cria três classes de objeto quando usado como um arquivo de entrada com o comando 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. *Os comandosFictional_Charactersclasse de objeto contém seis descritores:
- Story_StareBirthday,cada um com um tipo de descritor de char e um comprimento máximo de 20 caracteres.
- Agecom um tipo de descritor de curta duração.
- Friends_ofeEnemies_ofsão tanto da classe de link quanto de link para as duas classes de objetos previamente definidas.Nota: O link de classe de objeto é repetido duas vezes.
- Do_Thiscom um tipo de descritor de método.
Para gerar os arquivos de classe de objeto necessários pelo ODM, o arquivo que contém esse código deve ser processado com o comando odmcreate
ODM exemplo de saída para definições de classe de objeto
O processamento do código no arquivo MyObjects.cre com o comando odmcreate gera as seguintes estruturas em um arquivo .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 código de exemplo para incluir objetos em classes de objeto
O código a seguir pode ser processado pelo comando odmadd para preencher as classes de objeto criadas pelo processamento do arquivo 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: O comentário * (asterisco) ou o comentário # (sinal de libra) no código de exemplo anterior não irá entrar no arquivo objeto. Se o início da linha fizer com que a linha seja um comentário, o comando não irá no arquivo objeto. O comentário será incluído no arquivo e tratado como uma string se ele for incluído dentro do "" (marcas de aspas duplas).