Overview
Comment: | s_expressions-file_writers: new package providing a pretty printer based on Stream_IO files |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9d6c39db7d8d583b175cfd27b7867459 |
User & Date: | nat on 2014-06-05 20:20:26 |
Other Links: | manifest | tags |
Context
2014-06-06
| ||
19:04 | s_expressions-file_writers: add a filename accessor function check-in: 9ef479b9be user: nat tags: trunk | |
2014-06-05
| ||
20:20 | s_expressions-file_writers: new package providing a pretty printer based on Stream_IO files check-in: 9d6c39db7d user: nat tags: trunk | |
2014-06-04
| ||
21:05 | s_expressions-printers-pretty: redesign the package around an abstract type with user-provided backend write procedure check-in: ee89558365 user: nat tags: trunk | |
Changes
Added src/natools-s_expressions-file_writers.adb version [a9d77c7157].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | ------------------------------------------------------------------------------ -- Copyright (c) 2014, 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.S_Expressions.File_Writers is package Stream_IO renames Ada.Streams.Stream_IO; overriding procedure Finalize (Object : in out Autoclose) is begin if Stream_IO.Is_Open (Object.File) then Stream_IO.Close (Object.File); end if; end Finalize; ------------------------- -- S-Expression Writer -- ------------------------- overriding procedure Write_Raw (Output : in out Writer; Data : in Ada.Streams.Stream_Element_Array) is begin Stream_IO.Write (Output.Holder.File, Data); end Write_Raw; function Create (Name : String; Form : String := "") return Writer is begin return Result : Writer do Create (Result, Name, Form); end return; end Create; function Open (Name : String; Form : String := "") return Writer is begin return Result : Writer do Open (Result, Name, Form); end return; end Open; procedure Create (Self : in out Writer; Name : in String; Form : in String := "") is begin Finalize (Self.Holder); Stream_IO.Create (Self.Holder.File, Stream_IO.Append_File, Name, Form); end Create; procedure Open (Self : in out Writer; Name : in String; Form : in String := "") is begin Finalize (Self.Holder); Stream_IO.Open (Self.Holder.File, Stream_IO.Append_File, Name, Form); end Open; end Natools.S_Expressions.File_Writers; |
Added src/natools-s_expressions-file_writers.ads version [9cd299dc99].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | ------------------------------------------------------------------------------ -- Copyright (c) 2014, 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.S_Expressions.File_Writers provides a pretty printer -- -- implementation using Stream_IO as backend. -- ------------------------------------------------------------------------------ with Natools.S_Expressions.Printers.Pretty; private with Ada.Finalization; private with Ada.Streams.Stream_IO; package Natools.S_Expressions.File_Writers is type Writer is limited new Printers.Pretty.Printer with private; function Create (Name : String; Form : String := "") return Writer; function Open (Name : String; Form : String := "") return Writer; -- Constructors using respectively Stream_IO.Create and Stream_IO.Open procedure Create (Self : in out Writer; Name : in String; Form : in String := ""); procedure Open (Self : in out Writer; Name : in String; Form : in String := ""); -- Reinitialize Self using Stream_IO.Create or Stream_IO.Open private type Autoclose is new Ada.Finalization.Limited_Controlled with record File : Ada.Streams.Stream_IO.File_Type; end record; overriding procedure Finalize (Object : in out Autoclose); -- Close the underlying file if it was opened type Writer is limited new Printers.Pretty.Printer with record Holder : Autoclose; end record; overriding procedure Write_Raw (Output : in out Writer; Data : in Ada.Streams.Stream_Element_Array); -- Write data into the underlying stream end Natools.S_Expressions.File_Writers; |