FSF GCC merge 02/23/03
[official-gcc.git] / gcc / ada / casing.ads
blob281dc2e6894d2deb885ffba005663f7d1e511b85
1 ------------------------------------------------------------------------------
2 -- --
3 -- GNAT COMPILER COMPONENTS --
4 -- --
5 -- C A S I N G --
6 -- --
7 -- S p e c --
8 -- --
9 -- --
10 -- Copyright (C) 1992-2000 Free Software Foundation, Inc. --
11 -- --
12 -- GNAT is free software; you can redistribute it and/or modify it under --
13 -- terms of the GNU General Public License as published by the Free Soft- --
14 -- ware Foundation; either version 2, or (at your option) any later ver- --
15 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
16 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
17 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
18 -- for more details. You should have received a copy of the GNU General --
19 -- Public License distributed with GNAT; see file COPYING. If not, write --
20 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
21 -- MA 02111-1307, USA. --
22 -- --
23 -- As a special exception, if other files instantiate generics from this --
24 -- unit, or you link this unit with other files to produce an executable, --
25 -- this unit does not by itself cause the resulting executable to be --
26 -- covered by the GNU General Public License. This exception does not --
27 -- however invalidate any other reasons why the executable file might be --
28 -- covered by the GNU Public License. --
29 -- --
30 -- GNAT was originally developed by the GNAT team at New York University. --
31 -- Extensive contributions were provided by Ada Core Technologies Inc. --
32 -- --
33 ------------------------------------------------------------------------------
35 with Types; use Types;
37 package Casing is
39 -- This package contains data and subprograms to support the feature that
40 -- recognizes the letter case styles used in the source program being
41 -- compiled, and uses this information for error message formatting, and
42 -- for recognizing reserved words that are misused as identifiers.
44 -------------------------------
45 -- Case Control Declarations --
46 -------------------------------
48 -- Declaration of type for describing casing convention
50 type Casing_Type is (
52 All_Upper_Case,
53 -- All letters are upper case
55 All_Lower_Case,
56 -- All letters are lower case
58 Mixed_Case,
59 -- The initial letter, and any letters after underlines are upper case.
60 -- All other letters are lower case
62 Unknown
63 -- Used if an identifier does not distinguish between the above cases,
64 -- (e.g. X, Y_3, M4, A_B, or if it is inconsistent ABC_def).
67 ------------------------------
68 -- Case Control Subprograms --
69 ------------------------------
71 procedure Set_Casing (C : Casing_Type; D : Casing_Type := Mixed_Case);
72 -- Takes the name stored in the first Name_Len positions of Name_Buffer
73 -- and modifies it to be consistent with the casing given by C, or if
74 -- C = Unknown, then with the casing given by D. The name is basically
75 -- treated as an identifier, except that special separator characters
76 -- other than underline are permitted and treated like underlines (this
77 -- handles cases like minus and period in unit names, apostrophes in error
78 -- messages, angle brackets in names like <any_type>, etc).
80 procedure Set_All_Upper_Case;
81 pragma Inline (Set_All_Upper_Case);
82 -- This procedure is called with an identifier name stored in Name_Buffer.
83 -- On return, the identifier is converted to all upper case. The call is
84 -- equivalent to Set_Casing (All_Upper_Case).
86 function Determine_Casing (Ident : Text_Buffer) return Casing_Type;
87 -- Determines the casing of the identifier/keyword string Ident
89 end Casing;