File: unit.ads

package info (click to toggle)
spark 2012.0.deb-9
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 29,260 kB
  • ctags: 3,098
  • sloc: ada: 186,243; cpp: 13,497; makefile: 685; yacc: 440; lex: 176; ansic: 119; sh: 16
file content (131 lines) | stat: -rw-r--r-- 4,881 bytes parent folder | download | duplicates (3)
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
-------------------------------------------------------------------------------
-- (C) Altran Praxis Limited
-------------------------------------------------------------------------------
--
-- The SPARK toolset is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the Free
-- Software Foundation; either version 3, or (at your option) any later
-- version. The SPARK toolset is distributed in the hope that it will be
-- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-- Public License for more details. You should have received a copy of the GNU
-- General Public License distributed with the SPARK toolset; see file
-- COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy of
-- the license.
--
--=============================================================================

with E_Strings;
with StringList;

--# inherit CommandLineData,
--#         Dictionary,
--#         ErrorHandler,
--#         E_Strings,
--#         LexTokenManager,
--#         SparkLex,
--#         SparkMakeDebug,
--#         SparkMakeErrors,
--#         SPARK_IO,
--#         SP_Symbols,
--#         StringList,
--#         TokenManager;

package Unit is

   type Kind is (
                 Package_Specification_Unit,
                 Public_Child_Package_Specification_Unit,
                 Private_Child_Package_Specification_Unit,
                 Main_Program_Unit,
                 Package_Body_Unit,
                 Separate_Body_Unit);

   subtype Specification_Unit is Kind range Package_Specification_Unit .. Private_Child_Package_Specification_Unit;

   subtype Child_Specification_Unit is Kind range
     Public_Child_Package_Specification_Unit .. Private_Child_Package_Specification_Unit;

   type Id is record
      The_Name : E_Strings.T;
      The_Kind : Kind;
   end record;

   Null_Id : constant Id := Id'(The_Name => E_Strings.Empty_String,
                                The_Kind => Kind'First);

   type Object is record
      The_Id              : Id;
      The_File            : E_Strings.T;
      The_Withed_Units    : StringList.Object;
      The_Inherited_Units : StringList.Object;
   end record;

   Null_Object : constant Object :=
     Object'
     (The_Id              => Null_Id,
      The_File            => E_Strings.Empty_String,
      The_Withed_Units    => StringList.Null_Object,
      The_Inherited_Units => StringList.Null_Object);

   -----------------------------------------------------------------------------

   function Kind_To_String (The_Unit : Kind) return E_Strings.T;

   -----------------------------------------------------------------------------

   function Are_Equal (L, R : Id) return Boolean;

   -----------------------------------------------------------------------------

   function Less_Than (L, R : Id) return Boolean;

   -----------------------------------------------------------------------------

   function Prefix (E_Str : E_Strings.T) return E_Strings.T;

   -----------------------------------------------------------------------------

   function Construct_Spec_Unit_Id (The_Name   : E_Strings.T;
                                    Is_Private : Boolean) return Id;

   -----------------------------------------------------------------------------

   procedure Get_Unit (In_File  : in     E_Strings.T;
                       The_Unit :    out Object);
   --# global in     CommandLineData.Content;
   --#        in     Dictionary.Dict;
   --#        in out ErrorHandler.Error_Context;
   --#        in out LexTokenManager.State;
   --#        in out SPARK_IO.File_Sys;
   --#           out SparkLex.Curr_Line;
   --# derives ErrorHandler.Error_Context,
   --#         LexTokenManager.State,
   --#         SparkLex.Curr_Line,
   --#         SPARK_IO.File_Sys,
   --#         The_Unit                   from CommandLineData.Content,
   --#                                         Dictionary.Dict,
   --#                                         ErrorHandler.Error_Context,
   --#                                         In_File,
   --#                                         LexTokenManager.State,
   --#                                         SPARK_IO.File_Sys;
   --
   -- Extracts the Unit information from the given file.

   -----------------------------------------------------------------------------

   procedure Output_Object (The_Unit : in Object);
   --# global in out SPARK_IO.File_Sys;
   --# derives SPARK_IO.File_Sys from *,
   --#                                The_Unit;
   --
   -- For debug only

   procedure Output_Id (The_Unit : in Id);
   --# global in out SPARK_IO.File_Sys;
   --# derives SPARK_IO.File_Sys from *,
   --#                                The_Unit;
   --
   -- For debug only

end Unit;