]>
Commit | Line | Data |
---|---|---|
69e6ee2f HK |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- B I N D O . V A L I D A T O R S -- | |
6 | -- -- | |
7 | -- S p e c -- | |
8 | -- -- | |
4b490c1e | 9 | -- Copyright (C) 2019-2020, Free Software Foundation, Inc. -- |
69e6ee2f HK |
10 | -- -- |
11 | -- GNAT is free software; you can redistribute it and/or modify it under -- | |
12 | -- terms of the GNU General Public License as published by the Free Soft- -- | |
13 | -- ware Foundation; either version 3, or (at your option) any later ver- -- | |
14 | -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- | |
15 | -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- | |
16 | -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- | |
17 | -- for more details. You should have received a copy of the GNU General -- | |
18 | -- Public License distributed with GNAT; see file COPYING3. If not, go to -- | |
19 | -- http://www.gnu.org/licenses for a complete copy of the license. -- | |
20 | -- -- | |
21 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
22 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- | |
23 | -- -- | |
24 | ------------------------------------------------------------------------------ | |
25 | ||
26 | -- For full architecture, see unit Bindo. | |
27 | ||
28 | -- The following unit contains facilities to verify the validity of the | |
29 | -- various graphs used in determining the elaboration order of units. | |
30 | ||
31 | with Bindo.Graphs; | |
32 | use Bindo.Graphs; | |
33 | use Bindo.Graphs.Invocation_Graphs; | |
34 | use Bindo.Graphs.Library_Graphs; | |
35 | ||
36 | package Bindo.Validators is | |
37 | ||
9795b203 HK |
38 | ---------------------- |
39 | -- Cycle_Validators -- | |
40 | ---------------------- | |
41 | ||
42 | package Cycle_Validators is | |
43 | Invalid_Cycle : exception; | |
44 | -- Exception raised when the library graph contains an invalid cycle | |
45 | ||
46 | procedure Validate_Cycles (G : Library_Graph); | |
47 | -- Ensure that all cycles of library graph G meet the following | |
48 | -- requirements: | |
49 | -- | |
50 | -- * Are of proper kind | |
51 | -- * Have enough edges to form a circuit | |
52 | -- * No edge is repeated | |
53 | -- | |
54 | -- Diagnose issues and raise Invalid_Cycle if this is not the case. | |
55 | ||
56 | end Cycle_Validators; | |
57 | ||
69e6ee2f HK |
58 | ---------------------------------- |
59 | -- Elaboration_Order_Validators -- | |
60 | ---------------------------------- | |
61 | ||
62 | package Elaboration_Order_Validators is | |
63 | Invalid_Elaboration_Order : exception; | |
64 | -- Exception raised when the elaboration order contains invalid data | |
65 | ||
66 | procedure Validate_Elaboration_Order (Order : Unit_Id_Table); | |
67 | -- Ensure that elaboration order Order meets the following requirements: | |
68 | -- | |
69 | -- * All units that must be elaborated appear in the order | |
70 | -- * No other units appear in the order | |
71 | -- | |
72 | -- Diagnose issues and raise Invalid_Elaboration_Order if this is not | |
73 | -- the case. | |
74 | ||
75 | end Elaboration_Order_Validators; | |
76 | ||
77 | --------------------------------- | |
78 | -- Invocation_Graph_Validators -- | |
79 | --------------------------------- | |
80 | ||
81 | package Invocation_Graph_Validators is | |
82 | Invalid_Invocation_Graph : exception; | |
83 | -- Exception raised when the invocation graph contains invalid data | |
84 | ||
85 | procedure Validate_Invocation_Graph (G : Invocation_Graph); | |
86 | -- Ensure that invocation graph G meets the following requirements: | |
87 | -- | |
88 | -- * All attributes of edges are properly set | |
89 | -- * All attributes of vertices are properly set | |
90 | -- | |
91 | -- Diagnose issues and raise Invalid_Invocation_Graph if this is not the | |
92 | -- case. | |
93 | ||
94 | end Invocation_Graph_Validators; | |
95 | ||
96 | ------------------------------ | |
97 | -- Library_Graph_Validators -- | |
98 | ------------------------------ | |
99 | ||
100 | package Library_Graph_Validators is | |
101 | Invalid_Library_Graph : exception; | |
102 | -- Exception raised when the library graph contains invalid data | |
103 | ||
104 | procedure Validate_Library_Graph (G : Library_Graph); | |
105 | -- Ensure that library graph G meets the following requirements: | |
106 | -- | |
107 | -- * All attributes edges are properly set | |
108 | -- * All attributes of vertices are properly set | |
109 | -- | |
110 | -- Diagnose issues and raise Invalid_Library_Graph if this is not the | |
111 | -- case. | |
112 | ||
113 | end Library_Graph_Validators; | |
114 | ||
115 | end Bindo.Validators; |