j2ada_1.4.2_79a46634/src/objsrc.ads

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
--------------------------------------------------------------------------------
-- NOM DU CSU (spécification)       : ObjSrc.ads
-- AUTEUR DU CSU                    : P. Pignard
-- VERSION DU CSU                   : 1.4a
-- DATE DE LA DERNIERE MISE A JOUR  : 23 décembre 2008
-- ROLE DU CSU                      : Unité de gestion des objets Java.
--
--
-- FONCTIONS EXPORTEES DU CSU       :
--
--
-- FONCTIONS LOCALES DU CSU         :
--
--
-- NOTES                            :
--
-- COPYRIGHT                        : (c) Pascal Pignard 2008
-- LICENCE                          : CeCILL V2 (http://www.cecill.info)
-- CONTACT                          : http://blady.pagesperso-orange.fr
--------------------------------------------------------------------------------

with BasicDef;                           use BasicDef;
with OutSrc;                             use OutSrc;
with Ada.Containers.Doubly_Linked_Lists;

package ObjSrc is

   -- Objet assurant la gestion des objets Java
   type TJavaObj is tagged private;
   type PJavaObj is access TJavaObj;

   -- Objet assurant la gestion des classes Java
   type TJavaClass is new TJavaObj with private;
   type PJavaClass is access TJavaClass;

   -- Procédure définissant le nom de l'objet java
   procedure SetId (O : access TJavaClass; I : TText);
   -- Fonction renvoyant le nom de l'objet java
   function GetId (O : access TJavaClass) return TText;
   -- Procédure d'écriture de l'objet complet
   procedure Add (O : access TJavaClass; To : PTextListMgr);
   -- Procédure définissant l'attribut de l'objet Java
   procedure SetModifier (O : access TJavaClass; M : TText);
   -- Procédure définissant l'attribut de l'objet Java
   procedure SetModifier (O : access TJavaClass; From : access TJavaClass'Class);
   -- Procédure définissant le type Interface
   procedure SetInterface (O : access TJavaClass);
   -- Fonction renvoyant le type Interface
   function GetInterface (O : access TJavaClass) return Boolean;
   -- Fonction renvoyant l'état fermé du type objet
   function IsClosed (O : access TJavaClass) return Boolean;
   -- Fonction renvoyant la référence des champs de l'objet
   function GetFieldList (O : access TJavaClass) return PVarListMgr;
   -- Fonction renvoyant la référence des classes parent de l'objet
   function GetParentList (O : access TJavaClass) return PVarListMgr;

   -- Objet assurant la gestion des variables Java
   type TJavaVar is new TJavaClass with private;
   type PJavaVar is access TJavaVar;
   type TTypeNature is (Void, Basic, Class);

   -- Procédure initialisant le type de l'objet Java
   procedure SetType (O : access TJavaVar; N : TTypeNature; T : TText := NullTText);
   -- Procédure initialisant le type du new
   procedure SetNewType (O : access TJavaVar; N : TTypeNature; T : TText);
   -- Fonction renvoyant le type java
   function GetType (O : access TJavaVar) return TText;
   -- Fonction renvoyant la nature du type java
   function GetTypeNature (O : access TJavaVar) return TTypeNature;
   -- Fonction renvoyant le type de base de l'objet java (sans .ref)
   function GetBaseType (O : access TJavaVar) return TText;
   -- Procédure définissant le nom de l'objet java à la place du type
   procedure SetIdFromType (O : access TJavaVar);
   -- Procédure incrémentant le nombre d'index du type ou de l'objet Java
   procedure IncTabIndex (O : access TJavaVar);
   -- Procédure definissant la valeur initiale de l'objet Java
   procedure SetInitText (O : access TJavaVar; I : TText);
   -- Fonction renvoyant l'objet de récupération de la valeur initiale
   function GetInitText (O : access TJavaVar) return PTextListMgr;
   -- Procédure d'écriture de l'objet complet
   procedure Add
     (O      : access TJavaVar;
      ToPack : PTextListMgr;
      ToObj  : access TTextListMgr'Class);
   -- Fonction renvoyant l'attribut abstract
   function IsAbstract (O : access TJavaVar) return Boolean;

   -- Objet assurant la gestion des paramétres Java
   type TJavaPara is new TJavaVar with private;
   type PJavaPara is access TJavaPara;

   -- Procédure d'écriture de l'objet complet
   procedure Add (O : access TJavaPara; To : PTextListMgr);

   -- Objet assurant la gestion des méthodes Java
   type TJavaMeth is new TJavaObj with private;
   type PJavaMeth is access TJavaMeth;

   -- Procédure definissant la présence de paramètres
   procedure SetParaPresent (O : access TJavaMeth; Present : Boolean);

   -- Fonction renvoyan la présence de paramètres
   function IsParaPresent (O : access TJavaMeth) return Boolean;

   -- Procédures empilant et dépilant la présence de paramètres
   procedure PushPara (O : access TJavaMeth);
   procedure PopPara (O : access TJavaMeth);

private
   type TJavaObj is tagged null record;

   type TModifier is (
      jpublic,
      jprivate,
      jprotected,
      jstatic,
      jfinal,
      jnative,
      jsynchronized,
      jabstract,
      jthreadsafe,
      jtransient);
   type TTabModifiers is array (TModifier) of Boolean;
   type TJavaClass is new TJavaObj with record
      Id                 : TText         := NullTText;
      Modifiers, IntMods : TTabModifiers := (others => False);
      Closed             : Boolean       := False;
      JInterface         : Boolean       := False;
      FieldList          : PVarListMgr   := new TVarListMgr;
      ParentList         : PVarListMgr   := new TVarListMgr;
   end record;

   type TJavaVar is new TJavaClass with record
      JType     : TText        := NullTText;
      TypeIndex : Natural      := 0;
      VarIndex  : Natural      := 0;
      InitText  : PTextListMgr := new TTextListMgr;
      Nature    : TTypeNature  := Void;
   end record;

   type TJavaPara is new TJavaVar with null record;

   package ParaLists is new Ada.Containers.Doubly_Linked_Lists (Boolean);
   type TJavaMeth is new TJavaObj with record
      ParaPresent : ParaLists.List;
   end record;

end ObjSrc;