Files
xmlada/input_sources/input_sources.adb
Valentine Reboul 1c7ee7d95d [PA07-083][Q831-010] cleanup of ineffective use-clauses
Change-Id: I351103d11afd53b4c8c264a2e9df9711df8d35a0
2017-09-14 12:41:38 +02:00

159 lines
5.0 KiB
Ada

------------------------------------------------------------------------------
-- XML/Ada - An XML suite for Ada95 --
-- --
-- Copyright (C) 2001-2017, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
-- Software Foundation; either version 3, 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 MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
------------------------------------------------------------------------------
with Unicode.Encodings; use Unicode.Encodings;
with Unicode.CES; use Unicode.CES;
package body Input_Sources is
-----------------
-- Prolog_Size --
-----------------
function Prolog_Size (From : Input_Source) return Natural is
begin
return From.Prolog_Size;
end Prolog_Size;
------------------
-- Set_Encoding --
------------------
procedure Set_Encoding
(Input : in out Input_Source;
Es : Unicode.CES.Encoding_Scheme) is
begin
-- Do not change the encoding if the previous one was detected from the
-- BOM. For instance, if we have detected UTF16-BE, we do not want an
-- "encoding='UTF-16'" declaration in the XML document to switch us to
-- UTF16-LE
if Input.Prolog_Size = 0 -- no BOM
or else Input.Es.Length /= Es.Length -- no the same encoding scheme
then
Input.Es := Es;
end if;
end Set_Encoding;
------------------
-- Get_Encoding --
------------------
function Get_Encoding (Input : Input_Source)
return Unicode.CES.Encoding_Scheme is
begin
return Input.Es;
end Get_Encoding;
-----------------------
-- Set_Character_Set --
-----------------------
procedure Set_Character_Set
(Input : in out Input_Source;
Cs : Unicode.CCS.Character_Set) is
begin
Input.Cs := Cs;
end Set_Character_Set;
-----------------------
-- Get_Character_Set --
-----------------------
function Get_Character_Set (Input : Input_Source)
return Unicode.CCS.Character_Set is
begin
return Input.Cs;
end Get_Character_Set;
-------------------
-- Set_System_Id --
-------------------
procedure Set_System_Id (Input : in out Input_Source; Id : Byte_Sequence) is
begin
Free (Input.System_Id);
Input.System_Id := new Byte_Sequence'(Id);
end Set_System_Id;
-------------------
-- Get_System_Id --
-------------------
function Get_System_Id (Input : Input_Source) return Byte_Sequence is
begin
if Input.System_Id = null then
return "";
else
return Input.System_Id.all;
end if;
end Get_System_Id;
-------------------
-- Set_Public_Id --
-------------------
procedure Set_Public_Id (Input : in out Input_Source; Id : Byte_Sequence) is
begin
Free (Input.Public_Id);
Input.Public_Id := new Byte_Sequence'(Id);
end Set_Public_Id;
-------------------
-- Get_Public_Id --
-------------------
function Get_Public_Id (Input : Input_Source) return Byte_Sequence is
begin
if Input.Public_Id = null then
return "";
else
return Input.Public_Id.all;
end if;
end Get_Public_Id;
-----------
-- Close --
-----------
procedure Close (Input : in out Input_Source) is
begin
Free (Input.Public_Id);
Free (Input.System_Id);
end Close;
-------------------------
-- Set_Stream_Encoding --
-------------------------
procedure Set_Stream_Encoding
(Input : in out Input_Sources.Input_Source'Class;
Encoding : String)
is
Encode : constant Unicode_Encoding := Get_By_Name (Encoding);
begin
Set_Encoding (Input, Encode.Encoding_Scheme);
Set_Character_Set (Input, Encode.Character_Set);
end Set_Stream_Encoding;
end Input_Sources;