OSDN Git Service

* gcc-interface/misc.c (gnat_expand_expr): Remove.
[pf3gnuchains/gcc-fork.git] / gcc / ada / a-comlin.adb
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT RUN-TIME COMPONENTS                         --
4 --                                                                          --
5 --                     A D A . C O M M A N D _ L I N E                      --
6 --                                                                          --
7 --                                 B o d y                                  --
8 --                                                                          --
9 --          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
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.                                     --
17 --                                                                          --
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
19 -- additional permissions described in the GCC Runtime Library Exception,   --
20 -- version 3.1, as published by the Free Software Foundation.               --
21 --                                                                          --
22 -- You should have received a copy of the GNU General Public License and    --
23 -- a copy of the GCC Runtime Library Exception along with this program;     --
24 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
25 -- <http://www.gnu.org/licenses/>.                                          --
26 --                                                                          --
27 -- GNAT was originally developed  by the GNAT team at  New York University. --
28 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
29 --                                                                          --
30 ------------------------------------------------------------------------------
31
32 with System;                 use System;
33
34 package body Ada.Command_Line is
35
36    function Arg_Count return Natural;
37    pragma Import (C, Arg_Count, "__gnat_arg_count");
38
39    procedure Fill_Arg (A : System.Address; Arg_Num : Integer);
40    pragma Import (C, Fill_Arg, "__gnat_fill_arg");
41
42    function Len_Arg (Arg_Num : Integer) return Integer;
43    pragma Import (C, Len_Arg, "__gnat_len_arg");
44
45    -----------------------
46    -- Local Subprograms --
47    -----------------------
48
49    function Initialized return Boolean;
50    --  Checks to ensure that gnat_argc and gnat_argv have been properly
51    --  initialized.  Returns false if not, or if argv / argc are
52    --  unsupported on the target (e.g. VxWorks).
53
54    --------------
55    -- Argument --
56    --------------
57
58    function Argument (Number : Positive) return String is
59       Num : Positive;
60
61    begin
62       if Number > Argument_Count then
63          raise Constraint_Error;
64       end if;
65
66       if Remove_Args = null then
67          Num := Number;
68       else
69          Num := Remove_Args (Number);
70       end if;
71
72       declare
73          Arg : aliased String (1 .. Len_Arg (Num));
74
75       begin
76          Fill_Arg (Arg'Address, Num);
77          return Arg;
78       end;
79    end Argument;
80
81    --------------------
82    -- Argument_Count --
83    --------------------
84
85    function Argument_Count return Natural is
86    begin
87       if not Initialized then
88          --  RM A.15 (11)
89          return 0;
90       end if;
91
92       if Remove_Args = null then
93          return Arg_Count - 1;
94       else
95          return Remove_Count;
96       end if;
97    end Argument_Count;
98
99    -----------------
100    -- Initialized --
101    -----------------
102
103    function Initialized return Boolean is
104       gnat_argv : System.Address;
105       pragma Import (C, gnat_argv, "gnat_argv");
106
107    begin
108       return gnat_argv /= System.Null_Address;
109    end Initialized;
110
111    ------------------
112    -- Command_Name --
113    ------------------
114
115    function Command_Name return String is
116    begin
117       if not Initialized then
118          return "";
119       end if;
120
121       declare
122          Arg : aliased String (1 .. Len_Arg (0));
123
124       begin
125          Fill_Arg (Arg'Address, 0);
126          return Arg;
127       end;
128    end Command_Name;
129
130 end Ada.Command_Line;