diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/ada/stringt.h | |
download | cbb-gcc-4.6.4-15d2061ac0796199866debe9ac87130894b0cdd3.tar.bz2 cbb-gcc-4.6.4-15d2061ac0796199866debe9ac87130894b0cdd3.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'gcc/ada/stringt.h')
-rw-r--r-- | gcc/ada/stringt.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/gcc/ada/stringt.h b/gcc/ada/stringt.h new file mode 100644 index 000000000..66ca4fb0f --- /dev/null +++ b/gcc/ada/stringt.h @@ -0,0 +1,86 @@ +/**************************************************************************** + * * + * GNAT COMPILER COMPONENTS * + * * + * S T R I N G T * + * * + * C Header File * + * * + * Copyright (C) 1992-2007, Free Software Foundation, Inc. * + * * + * GNAT is free software; you can redistribute it and/or modify it under * + * terms of the GNU General Public License as published by the Free Soft- * + * ware Foundation; either version 3, or (at your option) any later ver- * + * sion. GNAT is distributed in the hope that it will be useful, but WITH- * + * OUT 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 GNAT; see file COPYING3. If not, go to * + * http://www.gnu.org/licenses for a complete copy of the license. * + * * + * GNAT was originally developed by the GNAT team at New York University. * + * Extensive contributions were provided by Ada Core Technologies Inc. * + * * + ****************************************************************************/ + +/* This file is the C file that corresponds to the Ada package spec + Stringt. It was created manually from stringt.ads and stringt.adb + + Note: only the access functions are provided, since the tree transformer + is not allowed to modify the tree or its auxiliary structures. + + This package contains routines for handling the strings table which is + used to store string constants encountered in the source, and also those + additional string constants generated by compile time concatenation and + other similar processing. + + A string constant in this table consists of a series of Char_Code values, + so that 16-bit character codes can be properly handled if this feature is + implemented in the scanner. + + There is no guarantee that hashing is used in the implementation. This + means that the caller cannot count on having the same Id value for two + identical strings stored separately. + + The String_Id values reference entries in the Strings table, which + contains String_Entry records that record the length of each stored string + and its starting location in the String_Chars table. */ + +struct String_Entry +{ + Int String_Index; + Int Length; +}; + +/* Pointer to string entry vector. This pointer is passed to the tree + transformer and stored in a global location. */ +extern struct String_Entry *Strings_Ptr; + +/* Pointer to name characters table. This pointer is passed to the tree + transformer and stored in a global location for access from here. The + String_Index values are subscripts into this array. */ +extern Char_Code *String_Chars_Ptr; + + +/* String_Length returns the length of the specified string. */ +INLINE Int String_Length (String_Id); + +INLINE Int +String_Length (String_Id Id) +{ + return Strings_Ptr[Id - First_String_Id].Length; +} + + +/* Get_String_Char obtains the specified character from a stored string. The + lower bound of stored strings is always 1, so the range of values is 1 to + String_Length (Id). */ +INLINE Char_Code Get_String_Char (String_Id, Int); + +INLINE Char_Code +Get_String_Char (String_Id Id, Int Index) +{ + return + String_Chars_Ptr + [Strings_Ptr[Id - First_String_Id].String_Index + Index - 1]; +} |