Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | file_streams: new package for a simple mix-in of stream and file |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
3deed330501486dba8ca13ecd3e4963d |
| User & Date: | nat 2015-01-23 22:48:02.486 |
Context
|
2015-02-17
| ||
| 23:33 | s_expressions-printers-pretty: make ancestry of Stream_Parser public check-in: a6a5d38d6f user: nat tags: trunk | |
|
2015-01-23
| ||
| 22:48 | file_streams: new package for a simple mix-in of stream and file check-in: 3deed33050 user: nat tags: trunk | |
|
2015-01-16
| ||
| 22:10 | tools: new "timekey" too to provide a CLI interface to Natools.Time_Keys check-in: 25d22b98f4 user: nat tags: trunk | |
Changes
Added src/natools-file_streams.adb.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
------------------------------------------------------------------------------
-- Copyright (c) 2015, Natacha Porté --
-- --
-- Permission to use, copy, modify, and distribute this software for any --
-- purpose with or without fee is hereby granted, provided that the above --
-- copyright notice and this permission notice appear in all copies. --
-- --
-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES --
-- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF --
-- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR --
-- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES --
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN --
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF --
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --
------------------------------------------------------------------------------
package body Natools.File_Streams is
overriding procedure Finalize (Object : in out Autoclose) is
begin
if Stream_IO.Is_Open (Object.Backend) then
Stream_IO.Close (Object.Backend);
end if;
end Finalize;
not overriding function Form (File : in File_Stream) return String is
begin
return Stream_IO.Form (File.Internal.Backend);
end Form;
not overriding function Create
(Mode : in Stream_IO.File_Mode := Stream_IO.Out_File;
Name : in String := "";
Form : in String := "")
return File_Stream is
begin
return Result : File_Stream do
Stream_IO.Create (Result.Internal.Backend, Mode, Name, Form);
end return;
end Create;
not overriding function Mode (File : in File_Stream)
return Stream_IO.File_Mode is
begin
return Stream_IO.Mode (File.Internal.Backend);
end Mode;
not overriding function Name (File : in File_Stream) return String is
begin
return Stream_IO.Name (File.Internal.Backend);
end Name;
not overriding function Open
(Mode : in Stream_IO.File_Mode;
Name : in String;
Form : in String := "")
return File_Stream is
begin
return Result : File_Stream do
Stream_IO.Open (Result.Internal.Backend, Mode, Name, Form);
end return;
end Open;
overriding procedure Read
(Stream : in out File_Stream;
Item : out Ada.Streams.Stream_Element_Array;
Last : out Ada.Streams.Stream_Element_Offset)
is
pragma Unmodified (Stream);
begin
Stream_IO.Read (Stream.Internal.Backend, Item, Last);
end Read;
overriding procedure Write
(Stream : in out File_Stream;
Item : in Ada.Streams.Stream_Element_Array)
is
pragma Unmodified (Stream);
begin
Stream_IO.Write (Stream.Internal.Backend, Item);
end Write;
end Natools.File_Streams;
|
Added src/natools-file_streams.ads.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
------------------------------------------------------------------------------
-- Copyright (c) 2015, Natacha Porté --
-- --
-- Permission to use, copy, modify, and distribute this software for any --
-- purpose with or without fee is hereby granted, provided that the above --
-- copyright notice and this permission notice appear in all copies. --
-- --
-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES --
-- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF --
-- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR --
-- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES --
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN --
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF --
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --
------------------------------------------------------------------------------
------------------------------------------------------------------------------
-- Natools.File_Streams provides a standard stream object associated with --
-- a file on disk. The semantics of the provided subprograms mirror those --
-- of Ada.Streams.Stream_IO, except that the file has to be opened on --
-- object initialization and closed on finalization. --
-- The current implementation does not expose most useful primitives, but --
-- is enough for a direct use as a stream object. --
------------------------------------------------------------------------------
with Ada.Streams.Stream_IO;
private with Ada.Finalization;
package Natools.File_Streams is
pragma Preelaborate;
package Stream_IO renames Ada.Streams.Stream_IO;
type File_Stream is limited new Ada.Streams.Root_Stream_Type with private;
overriding procedure Read
(Stream : in out File_Stream;
Item : out Ada.Streams.Stream_Element_Array;
Last : out Ada.Streams.Stream_Element_Offset);
overriding procedure Write
(Stream : in out File_Stream;
Item : in Ada.Streams.Stream_Element_Array);
not overriding function Create
(Mode : in Stream_IO.File_Mode := Stream_IO.Out_File;
Name : in String := "";
Form : in String := "")
return File_Stream;
not overriding function Open
(Mode : in Stream_IO.File_Mode;
Name : in String;
Form : in String := "")
return File_Stream;
not overriding function Mode (File : in File_Stream)
return Stream_IO.File_Mode;
not overriding function Name (File : in File_Stream) return String;
not overriding function Form (File : in File_Stream) return String;
private
type Autoclose is new Ada.Finalization.Limited_Controlled with record
Backend : Stream_IO.File_Type;
end record;
overriding procedure Finalize (Object : in out Autoclose);
type File_Stream is limited new Ada.Streams.Root_Stream_Type
with record
Internal : Autoclose;
end record;
end Natools.File_Streams;
|