agpl_1.0.0_b5da3320/3rdparty/aws/src/test_uconv.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
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
------------------------------------------------------------------------------
--                              Ada Web Server                              --
--                                                                          --
--                         Copyright (C) 2000-2001                          --
--                                ACT-Europe                                --
--                                                                          --
--  Authors: Dmitriy Anisimkov - Pascal Obry                                --
--                                                                          --
--  This library is free software; you can redistribute it and/or modify    --
--  it under the terms of the GNU General Public License as published by    --
--  the Free Software Foundation; either version 2 of the License, or (at   --
--  your option) any later version.                                         --
--                                                                          --
--  This library is distributed in the hope that it will be useful, but     --
--  WITHOUT ANY WARRANTY; without even the implied warranty of              --
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       --
--  General Public License for more details.                                --
--                                                                          --
--  You should have received a copy of the GNU General Public License       --
--  along with this library; if not, write to the Free Software Foundation, --
--  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.          --
--                                                                          --
--  As a special exception, if other files instantiate generics from this   --
--  unit, or you link this unit with other files to produce an executable,  --
--  this  unit  does not  by itself cause  the resulting executable to be   --
--  covered by the GNU General Public License. This exception does not      --
--  however invalidate any other reasons why the executable file  might be  --
--  covered by the  GNU Public License.                                     --
------------------------------------------------------------------------------

--  $Id: test_uconv.adb,v 1.1 2003/10/05 20:00:06 Jano Exp $

--  Detection of the fast unchecked conversion availability between
--  String and Stream_Element_Array. Copy file aws-translator-conversion-f.adb
--  to aws-translator-conversion.adb if the fast unchecked conversion
--  is supported on the target, or otherwise copy
--  aws-translator-conversion-p.adb to aws-translator-conversion.adb
--  if the fast unchecked conversion cannot be used.

with Ada.Unchecked_Conversion;
with Ada.Streams.Stream_IO; use Ada.Streams;

procedure Test_UConv is

   Sample : constant String :=
      "$Author: Jano $" & ASCII.LF &
      "$Date: 2003/10/05 20:00:06 $" & ASCII.LF &
      "$Name:  $" & ASCII.LF &
      "$Locker:  $" & ASCII.LF &
      "$RCSfile: test_uconv.adb,v $" & ASCII.LF &
      "$Revision: 1.1 $" & ASCII.LF &
      "$Source: C:\\Documents\040and\040Settings\\Jano\\Mis\040documentos\\CD\\cvs/adagio/aws/src/test_uconv.adb,v $" & ASCII.LF &
      "$State: Exp $" & ASCII.LF;

   Prefix : constant String := "aws-translator-conversion";
   Suffix : constant String := ".adb";
   Target : constant String := Prefix & Suffix;

   subtype Fixed_String is String (Sample'First .. Sample'Last);

   subtype Fixed_Array is Stream_Element_Array
     (Stream_Element_Offset (Sample'First)
      .. Stream_Element_Offset (Sample'Last));

   procedure Copy_File (Source : String);

   function To_Stream_Elements is
     new Ada.Unchecked_Conversion (Fixed_String, Fixed_Array);

   function To_String is
     new Ada.Unchecked_Conversion (Fixed_Array, Fixed_String);

   ---------------
   -- Copy_File --
   ---------------

   procedure Copy_File (Source : String) is
      use Ada.Streams.Stream_IO;
      Source_File : File_Type;
      Target_File : File_Type;
      Buffer      : Stream_Element_Array (0 .. 1024);
      Last        : Stream_Element_Offset;
   begin
      Open   (Source_File, In_File,  Source);
      Create (Target_File, Out_File, Target);

      loop
         Read  (Source_File, Buffer, Last);
         Write (Target_File, Buffer (0 .. Last));
         exit when Last < Buffer'Last;
      end loop;

      Close (Source_File);
      Close (Target_File);
   end Copy_File;

begin
   if Fixed_Array'Size = Fixed_String'Size
     and then Fixed_Array'Alignment = Fixed_String'Alignment
     and then Sample = To_String (To_Stream_Elements (Sample))
   then
      Copy_File (Prefix & "-f" & Suffix);
   else
      Copy_File (Prefix & "-p" & Suffix);
   end if;
end Test_UConv;