/*-------------------------------------------------------------------
Fichier     : $monmodule$.e
Objet       : En-tete de $monmodule$

Module      : $Mon Module$
Auteur-Date : DUVAL-Jean-Pierre - Novembre 2003.
---------------------------------------------------------------------
                         Observations

Substituer $monmodule$ par le nom du module en minuscule -> upskrn.
Substituer $MonModule$ par le nom du module en maj/minuscule -> UpsKrn.
Substituer $Mon Module$ par le libelle du module  -> Up ! Kernel.
 
---------------------------------------------------------------------*/

/**********************************/
#if !defined(PasseModule$MonModule$)
/**********************************/
#define PasseModule$MonModule$ 1

/**********************/
#if defined(__cplusplus)
/**********************/
extern "C"
{
/****/
#endif
/****/

#define UpsCon$MonModule$_1 123
   /* Constante : A */
#define UpsCon$MonModule$_2 123.456
   /* Constante : B */

/*--------------------*/
/* Enumere A          */
/*--------------------*/
#define UpsEnu$MonModule$_1_1 1
   /* Valeur : A */
#define UpsEnu$MonModule$_1_2 2
   /* Valeur : B */

/*--------------------*/
/* Enumere B          */
/*--------------------*/
#define UpsEnu$MonModule$_2_1 1
   /* Valeur : A */
#define UpsEnu$MonModule$_2_2 2
   /* Valeur : B */

/****************************************************************/
typedef struct upstyp$monmodule$_1_1_0_0
/* Objet : Proprietes du type A.                                */
/****************************************************************/
{
TypUpsVmUnsignedChar UpsChamp1;
   /* A:Enumere. */
TypUpsVmLong UpsChamp2;
   /* B:Entier. */
TypUpsVmDouble UpsChamp3;
   /* C:Reel. */
TypUpsVmAdresse UpsChamp4;
   /* D:Caractere. */
TypUpsVmAdresse UpsChamp5;
   /* E:Objet. */
} UpsTyp$MonModule$_1_1_0_0;

/****************************************************************/
typedef struct typprm$monmodule$_1_5_1
/* Objet : A.P(A:Enumere, B:Entier, C:Reel, D:Caractere,        */
/* E:Objet);                                                    */
/****************************************************************/
{
TypUpsVmUnsignedChar UpsVar1;
   /* A:Enumere. */
TypUpsVmLong UpsVar2;
   /* B:Entier. */
TypUpsVmDouble UpsVar3;
   /* C:Reel. */
TypUpsVmAdresse UpsVar4;
   /* D:Caractere. */
TypUpsVmAdresse UpsVar5;
   /* E:Objet. */
} TypPrm$MonModul$_1_5_1;

/****************************************************************/
typedef struct typprm$monmodule$_1_6_1
/* Objet : A.F(A:Enumere, B:Entier, C:Reel, D:Caractere,        */
/* E:Objet) Retourner Objet;                                    */
/****************************************************************/
{
TypUpsVmUnsignedChar UpsVar1;
   /* A:Enumere. */
TypUpsVmLong UpsVar2;
   /* B:Entier. */
TypUpsVmDouble UpsVar3;
   /* C:Reel. */
TypUpsVmAdresse UpsVar4;
   /* D:Caractere. */
TypUpsVmAdresse UpsVar5;
   /* E:Objet. */
} TypPrm$MonModul$_1_6_1;

/****************************************************************/
typedef struct upstrttyp$monmodule$_1_1_0_0
/* Objet : Methodes du type A.                                  */
/****************************************************************/
{
TypUpsVmEnteteMethodes EnteteMethodes;
   /* Entete des methodes. */

TypUpsVmVoid UpsVmAPI (*Trt_5_1)(TypUpsVmSession *Session, TypUpsVmAdresse *AdresseObjet, TypPrm$MonModule$_1_5_1 *UpsPrm);
   /* Procedure A.P(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet); */
TypUpsVmAdresse UpsVmAPI *(*Trt_6_1)(TypUpsVmSession *Session, TypUpsVmAdresse *AdresseResultat, TypUpsVmAdresse *AdresseObjet, TypPrm$MonModule$_1_6_1 *UpsPrm);
   /* Fonction A.F(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet) Retourner Objet; */

TypUpsVmCoAppel CoTrt_1_1;
   /* Procedure A.P(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet); */
TypUpsVmCoAppel CoTrt_2_1;
   /* Fonction A.F(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet) Retourner Objet; */
} UpsTrtTyp$MonModule$_1_1_0_0;

/*--------------------------------------------------------------*/
/* La version courante est la 1.0.0.                            */
/*--------------------------------------------------------------*/
typedef UpsTyp$MonModule$_1_1_0_0 UpsTyp$MonModule$_1;
typedef UpsTrt$MonModule$_1_1_0_0 UpsTrt$MonModule$_1;

/****************************************************************/
typedef struct upstyp$monmodule$_2_1_0_0
/* Objet : Proprietes du type B.                                */
/****************************************************************/
{
TypUpsVmUnsignedChar UpsChamp1;
   /* A:Enumere. */
TypUpsVmLong UpsChamp2;
   /* B:Entier. */
TypUpsVmDouble UpsChamp3;
   /* C:Reel. */
TypUpsVmAdresse UpsChamp4;
   /* D:Caractere. */
TypUpsVmAdresse UpsChamp5;
   /* E:Objet. */
} UpsTyp$MonModule$_2_1_0_0;

/****************************************************************/
typedef struct typprm$monmodule$_2_5_1
/* Objet : B.P(A:Enumere, B:Entier, C:Reel, D:Caractere,        */
/* E:Objet);                                                    */
/****************************************************************/
{
TypUpsVmUnsignedChar UpsVar1;
   /* A:Enumere. */
TypUpsVmLong UpsVar2;
   /* B:Entier. */
TypUpsVmDouble UpsVar3;
   /* C:Reel. */
TypUpsVmAdresse UpsVar4;
   /* D:Caractere. */
TypUpsVmAdresse UpsVar5;
   /* E:Objet. */
} TypPrm$MonModul$_2_5_1;

/****************************************************************/
typedef struct typprm$monmodule$_2_6_1
/* Objet : B.F(A:Enumere, B:Entier, C:Reel, D:Caractere,        */
/* E:Objet) Retourner Objet;                                    */
/****************************************************************/
{
TypUpsVmUnsignedChar UpsVar1;
   /* A:Enumere. */
TypUpsVmLong UpsVar2;
   /* B:Entier. */
TypUpsVmDouble UpsVar3;
   /* C:Reel. */
TypUpsVmAdresse UpsVar4;
   /* D:Caractere. */
TypUpsVmAdresse UpsVar5;
   /* E:Objet. */
} TypPrm$MonModul$_2_6_1;

/****************************************************************/
typedef struct upstrttyp$monmodule$_2_1_0_0
/* Objet : Methodes du type B.                                  */
/****************************************************************/
{
TypUpsVmEnteteMethodes EnteteMethodes;
   /* Entete des methodes. */

TypUpsVmVoid UpsVmAPI (*Trt_5_1)(TypUpsVmSession *Session, TypUpsVmAdresse *AdresseObjet, TypPrm$MonModule$_2_5_1 *UpsPrm);
   /* Procedure B.P(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet); */
TypUpsVmAdresse UpsVmAPI *(*Trt_6_1)(TypUpsVmSession *Session, TypUpsVmAdresse *AdresseResultat, TypUpsVmAdresse *AdresseObjet, TypPrm$MonModule$_2_6_1 *UpsPrm);
   /* Fonction B.F(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet) Retourner Objet; */

TypUpsVmCoAppel CoTrt_1_1;
   /* Procedure B.P(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet); */
TypUpsVmCoAppel CoTrt_2_1;
   /* Fonction B.F(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet) Retourner Objet; */
} UpsTrtTyp$MonModule$_2_1_0_0;

/*--------------------------------------------------------------*/
/* La version courante est la 1.0.0.                            */
/*--------------------------------------------------------------*/
typedef UpsTyp$MonModule$_2_1_0_0 UpsTyp$MonModule$_2;
typedef UpsTrt$MonModule$_2_1_0_0 UpsTrt$MonModule$_2;

/****************************************************************/
typedef struct typ$monmodule$donnees
/* Objet: Interface des donnees de $Mon Module$.                */
/****************************************************************/
{
TypUpsVmEnteteDonneesModule EnteteDonneesModule;
   /* Entete generique du module. */
} *Typ$MonModule$Donnees;

/****************************************************************/
typedef struct typprm$monmodule$_1_1
/* Objet : P(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet);*/
/****************************************************************/
{
TypUpsVmUnsignedChar UpsVar1;
   /* A:Enumere. */
TypUpsVmLong UpsVar2;
   /* B:Entier. */
TypUpsVmDouble UpsVar3;
   /* C:Reel. */
TypUpsVmAdresse UpsVar4;
   /* D:Caractere. */
TypUpsVmAdresse UpsVar5;
   /* E:Objet. */
} TypPrm$MonModul$_1_1;

/****************************************************************/
typedef struct typprm$monmodule$_2_1
/* Objet : F(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet) */
/* Retourner Objet;                                             */
/****************************************************************/
{
TypUpsVmUnsignedChar UpsVar1;
   /* A:Enumere. */
TypUpsVmLong UpsVar2;
   /* B:Entier. */
TypUpsVmDouble UpsVar3;
   /* C:Reel. */
TypUpsVmAdresse UpsVar4;
   /* D:Caractere. */
TypUpsVmAdresse UpsVar5;
   /* E:Objet. */
} TypPrm$MonModul$_2_1;

/****************************************************************/
typedef struct typ$monmodule$traitements_1_0_0
/* Objet: Interface des traitements de $Mon Module$.            */
/****************************************************************/
{
TypUpsVmEnteteMethodesModule EnteteMethodesModule;
   /* Methodes generiques au module. */ 

/*--------------------------------------------------------------*/
/* Procedures et fonctions.                                     */
/*--------------------------------------------------------------*/
TypUpsVmVoid UpsVmAPI (*Trt_1_1)(TypUpsVmSession *Session, TypPrm$MonModule$_1_1 *UpsPrm);
   /* Procedure P(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet); */
TypUpsVmAdresse UpsVmAPI *(*Trt_2_1)(TypUpsVmSession *Session, TypUpsVmAdresse *AdresseResultat, TypPrm$MonModule$_2_1 *UpsPrm);
   /* F(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet) Retourner Objet; */

TypUpsVmCoAppel CoTrt_1_1;
   /* Procedure P(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet); */
TypUpsVmCoAppel CoTrt_2_1;
   /* F(A:Enumere, B:Entier, C:Reel, D:Caractere, E:Objet) Retourner Objet; */

/*--------------------------------------------------------------*/
/* Tables des methodes.                                         */
/*--------------------------------------------------------------*/
UpsTrtTyp$MonModule$_1 *UpsTrt1;
   /* Methodes du type A. */ 
UpsTrtTyp$MonModule$_2 *UpsTrt2;
   /* Methodes du type B. */ 

/*--------------------------------------------------------------*/
/* Types et interfaces.                                         */
/*--------------------------------------------------------------*/
TypUpsVmAdresse UpsVmAPI *(*UpsType1_get)(TypUpsVmSession *Session);
   /* Type A. */
TypUpsVmLong UpsVmAPI (*UpsIndex1_get)(TypUpsVmSession *Session, TypUpsVmShort Numero);
   /* Type A. */
TypUpsVmAdresse UpsVmAPI *(*UpsType2_get)(TypUpsVmSession *Session);
   /* Type B. */
TypUpsVmLong UpsVmAPI (*UpsIndex2_get)(TypUpsVmSession *Session, TypUpsVmShort Numero);
   /* Type B. */

/*--------------------------------------------------------------*/
/* Variables globales.                                          */
/*--------------------------------------------------------------*/
TypUpsVmUnsignedChar UpsVmAPI (*UpsVar1_get)(TypUpsVmSession *Session);
   /* A:Enumere. */
TypUpsVmVoid UpsVmAPI (*UpsVar1_set)(TypUpsVmSession *Session, TypUpsVmUnsignedChar UpsPrm);
   /* A:Enumere. */
TypUpsVmLong UpsVmAPI (*UpsVar2_get)(TypUpsVmSession *Session);
   /* B:Enumere. */
TypUpsVmVoid UpsVmAPI (*UpsVar2_set)(TypUpsVmSession *Session, TypUpsVmLong UpsPrm, enum EnuUpsVmOperateur Operateur);
   /* B:Enumere. */
TypUpsVmLong UpsVmAPI (*UpsVar2_inc)(TypUpsVmSession *Session, TypUpsVmChar Incrementer, TypUpsVmChar Prefixe);
   /* B. */
TypUpsVmDouble UpsVmAPI (*UpsVar3_get)(TypUpsVmSession *Session);
   /* C:Enumere. */
TypUpsVmVoid UpsVmAPI (*UpsVar3_set)(TypUpsVmSession *Session, TypUpsVmDouble UpsPrm, enum EnuUpsVmOperateur Operateur);
   /* C:Enumere. */
TypUpsVmDouble UpsVmAPI (*UpsVar3_inc)(TypUpsVmSession *Session, TypUpsVmChar Incrementer, TypUpsVmChar Prefixe);
   /* C. */
TypUpsVmAdresse UpsVmAPI *(*UpsVar4_get)(TypUpsVmSession *Session);
   /* D:Caractere. */
TypUpsVmVoid UpsVmAPI (*UpsVar4_set)(TypUpsVmSession *Session, TypUpsVmAdresse *UpsPrm);
   /* D:Caractere. */
TypUpsVmAdresse UpsVmAPI *(*UpsVar5_get)(TypUpsVmSession *Session);
   /* E:Objet. */
TypUpsVmVoid UpsVmAPI (*UpsVar5_set)(TypUpsVmSession *Session, TypUpsVmAdresse *UpsPrm);
   /* E:Objet. */

/*--------------------------------------------------------------*/
/* Exceptions.                                                  */
/*--------------------------------------------------------------*/
TypUpsVmAdresse UpsVmAPI *(*UpsException1_get)(TypUpsVmSession *Session);
   /* Exception A. */
TypUpsVmAdresse UpsVmAPI *(*UpsException2_get)(TypUpsVmSession *Session);
   /* Exception B. */

/*--------------------------------------------------------------*/
/* Files d'attente.                                             */
/*--------------------------------------------------------------*/
TypUpsVmAdresse UpsVmAPI *(*UpsFileDAttente1_get)(TypUpsVmSession *Session);
   /* File d'attente A. */
TypUpsVmAdresse UpsVmAPI *(*UpsFileDAttente2_get)(TypUpsVmSession *Session);
   /* File d'attente B. */

/*--------------------------------------------------------------*/
/* Entrepots.                                                   */
/*--------------------------------------------------------------*/
TypUpsVmAdresse UpsVmAPI *(*UpsEntrepot1_get)(TypUpsVmSession *Session);
   /* Entrepot A. */
TypUpsVmUnsignedShort UpsVmAPI (*UpsNumeroEntrepot1_get)(TypUpsVmSession *Session);
   /* Numero de l'entrepot A. */
TypUpsVmAdresse UpsVmAPI *(*UpsEntrepot2_get)(TypUpsVmSession *Session);
   /* Entrepot B. */
TypUpsVmUnsignedShort UpsVmAPI (*UpsNumeroEntrepot2_get)(TypUpsVmSession *Session);
   /* Numero de l'entrepot B. */

/*--------------------------------------------------------------*/
/* Application Program Interfaces proprietaires.                */
/*--------------------------------------------------------------*/

} *Typ$MonModule$Traitements_1_0_0;

/*--------------------------------------------------------------*/
/* La version courante est la 1.0.0.                            */
/*--------------------------------------------------------------*/
typedef Typ$MonModule$Traitements_1_0_0 Typ$MonModule$Traitements;

/**********************/
#if defined(__cplusplus)
/**********************/
}
/****/
#endif
/****/

/****/
#endif
/****/