OSDN Git Service

2007-06-11 Bob Duff <duff@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / s-sequio.adb
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT RUN-TIME COMPONENTS                         --
4 --                                                                          --
5 --                 S Y S T E M . S E Q U E N T I A L _ I O                  --
6 --                                                                          --
7 --                                 B o d y                                  --
8 --                                                                          --
9 --          Copyright (C) 1992-2007, 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 2,  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 COPYING.  If not, write --
19 -- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
20 -- Boston, MA 02110-1301, USA.                                              --
21 --                                                                          --
22 -- As a special exception,  if other files  instantiate  generics from this --
23 -- unit, or you link  this unit with other files  to produce an executable, --
24 -- this  unit  does not  by itself cause  the resulting  executable  to  be --
25 -- covered  by the  GNU  General  Public  License.  This exception does not --
26 -- however invalidate  any other reasons why  the executable file  might be --
27 -- covered by the  GNU Public License.                                      --
28 --                                                                          --
29 -- GNAT was originally developed  by the GNAT team at  New York University. --
30 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
31 --                                                                          --
32 ------------------------------------------------------------------------------
33
34 with System.File_IO;
35 with Ada.Unchecked_Deallocation;
36
37 package body System.Sequential_IO is
38
39    subtype AP is FCB.AFCB_Ptr;
40
41    package FIO renames System.File_IO;
42
43    -------------------
44    -- AFCB_Allocate --
45    -------------------
46
47    function AFCB_Allocate
48      (Control_Block : Sequential_AFCB) return FCB.AFCB_Ptr
49    is
50       pragma Warnings (Off, Control_Block);
51
52    begin
53       return new Sequential_AFCB;
54    end AFCB_Allocate;
55
56    ----------------
57    -- AFCB_Close --
58    ----------------
59
60    --  No special processing required for Sequential_IO close
61
62    procedure AFCB_Close (File : not null access Sequential_AFCB) is
63       pragma Warnings (Off, File);
64
65    begin
66       null;
67    end AFCB_Close;
68
69    ---------------
70    -- AFCB_Free --
71    ---------------
72
73    procedure AFCB_Free (File : not null access Sequential_AFCB) is
74
75       type FCB_Ptr is access all Sequential_AFCB;
76
77       FT : FCB_Ptr := FCB_Ptr (File);
78
79       procedure Free is new
80         Ada.Unchecked_Deallocation (Sequential_AFCB, FCB_Ptr);
81
82    begin
83       Free (FT);
84    end AFCB_Free;
85
86    ------------
87    -- Create --
88    ------------
89
90    procedure Create
91      (File : in out File_Type;
92       Mode : FCB.File_Mode := FCB.Out_File;
93       Name : String := "";
94       Form : String := "")
95    is
96       Dummy_File_Control_Block : Sequential_AFCB;
97       pragma Warnings (Off, Dummy_File_Control_Block);
98       --  Yes, we know this is never assigned a value, only the tag
99       --  is used for dispatching purposes, so that's expected.
100
101    begin
102       FIO.Open (File_Ptr  => AP (File),
103                 Dummy_FCB => Dummy_File_Control_Block,
104                 Mode      => Mode,
105                 Name      => Name,
106                 Form      => Form,
107                 Amethod   => 'Q',
108                 Creat     => True,
109                 Text      => False);
110    end Create;
111
112    ----------
113    -- Open --
114    ----------
115
116    procedure Open
117      (File : in out File_Type;
118       Mode : FCB.File_Mode;
119       Name : String;
120       Form : String := "")
121    is
122       Dummy_File_Control_Block : Sequential_AFCB;
123       pragma Warnings (Off, Dummy_File_Control_Block);
124       --  Yes, we know this is never assigned a value, only the tag
125       --  is used for dispatching purposes, so that's expected.
126
127    begin
128       FIO.Open (File_Ptr  => AP (File),
129                 Dummy_FCB => Dummy_File_Control_Block,
130                 Mode      => Mode,
131                 Name      => Name,
132                 Form      => Form,
133                 Amethod   => 'Q',
134                 Creat     => False,
135                 Text      => False);
136    end Open;
137
138    ----------
139    -- Read --
140    ----------
141
142    --  Not used, since Sequential_IO files are not used as streams
143
144    procedure Read
145      (File : in out Sequential_AFCB;
146       Item : out Ada.Streams.Stream_Element_Array;
147       Last : out Ada.Streams.Stream_Element_Offset)
148    is
149    begin
150       raise Program_Error;
151    end Read;
152
153    -----------
154    -- Write --
155    -----------
156
157    --  Not used, since Sequential_IO files are not used as streams
158
159    procedure Write
160      (File : in out Sequential_AFCB;
161       Item : Ada.Streams.Stream_Element_Array)
162    is
163    begin
164       raise Program_Error;
165    end Write;
166
167 end System.Sequential_IO;