* einfo.h, sinfo.h, treeprs.ads: Regenerate.
[platform/upstream/gcc.git] / gcc / ada / i-fortra.adb
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT COMPILER COMPONENTS                         --
4 --                                                                          --
5 --                   I N T E R F A C E S . F O R T R A N                    --
6 --                                                                          --
7 --                                 B o d y                                  --
8 --                                                                          --
9 --                            $Revision: 1.6 $                              --
10 --                                                                          --
11 --        Copyright (C) 1992,1993,1994 Free Software Foundation, Inc.       --
12 --                                                                          --
13 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
14 -- terms of the  GNU General Public License as published  by the Free Soft- --
15 -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
16 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
17 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
18 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
19 -- for  more details.  You should have  received  a copy of the GNU General --
20 -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
21 -- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
22 -- MA 02111-1307, USA.                                                      --
23 --                                                                          --
24 -- As a special exception,  if other files  instantiate  generics from this --
25 -- unit, or you link  this unit with other files  to produce an executable, --
26 -- this  unit  does not  by itself cause  the resulting  executable  to  be --
27 -- covered  by the  GNU  General  Public  License.  This exception does not --
28 -- however invalidate  any other reasons why  the executable file  might be --
29 -- covered by the  GNU Public License.                                      --
30 --                                                                          --
31 -- GNAT was originally developed  by the GNAT team at  New York University. --
32 -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
33 --                                                                          --
34 ------------------------------------------------------------------------------
35
36 package body Interfaces.Fortran is
37
38    ------------
39    -- To_Ada --
40    ------------
41
42    --  Single character case
43
44    function To_Ada (Item : in Character_Set) return Character is
45    begin
46       return Character (Item);
47    end To_Ada;
48
49    --  String case (function returning converted result)
50
51    function To_Ada (Item : in Fortran_Character) return String is
52       T : String (1 .. Item'Length);
53
54    begin
55       for J in T'Range loop
56          T (J) := Character (Item (J - 1 + Item'First));
57       end loop;
58
59       return T;
60    end To_Ada;
61
62    --  String case (procedure copying converted string to given buffer)
63
64    procedure To_Ada
65      (Item   : in Fortran_Character;
66       Target : out String;
67       Last   : out Natural)
68    is
69    begin
70       if Item'Length = 0 then
71          Last := 0;
72          return;
73
74       elsif Target'Length = 0 then
75          raise Constraint_Error;
76
77       else
78          Last := Target'First - 1;
79
80          for J in Item'Range loop
81             Last := Last + 1;
82
83             if Last > Target'Last then
84                raise Constraint_Error;
85             else
86                Target (Last) := Character (Item (J));
87             end if;
88          end loop;
89       end if;
90    end To_Ada;
91
92    ----------------
93    -- To_Fortran --
94    ----------------
95
96    --  Character case
97
98    function To_Fortran (Item : in Character) return Character_Set is
99    begin
100       return Character_Set (Item);
101    end To_Fortran;
102
103    --  String case (function returning converted result)
104
105    function To_Fortran (Item : in String) return Fortran_Character is
106       T : Fortran_Character (1 .. Item'Length);
107
108    begin
109       for J in T'Range loop
110          T (J) := Character_Set (Item (J - 1 + Item'First));
111       end loop;
112
113       return T;
114    end To_Fortran;
115
116    --  String case (procedure copying converted string to given buffer)
117
118    procedure To_Fortran
119      (Item   : in String;
120       Target : out Fortran_Character;
121       Last   : out Natural)
122    is
123    begin
124       if Item'Length = 0 then
125          Last := 0;
126          return;
127
128       elsif Target'Length = 0 then
129          raise Constraint_Error;
130
131       else
132          Last := Target'First - 1;
133
134          for J in Item'Range loop
135             Last := Last + 1;
136
137             if Last > Target'Last then
138                raise Constraint_Error;
139             else
140                Target (Last) := Character_Set (Item (J));
141             end if;
142          end loop;
143       end if;
144    end To_Fortran;
145
146 end Interfaces.Fortran;