aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/ada/a-stuten.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8/gcc/ada/a-stuten.adb')
-rw-r--r--gcc-4.8/gcc/ada/a-stuten.adb209
1 files changed, 0 insertions, 209 deletions
diff --git a/gcc-4.8/gcc/ada/a-stuten.adb b/gcc-4.8/gcc/ada/a-stuten.adb
deleted file mode 100644
index fc669b56e..000000000
--- a/gcc-4.8/gcc/ada/a-stuten.adb
+++ /dev/null
@@ -1,209 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT RUN-TIME COMPONENTS --
--- --
--- A D A . S T R I N G S . U T F _ E N C O D I N G --
--- --
--- B o d y --
--- --
--- Copyright (C) 2010, Free Software Foundation, Inc. --
--- --
--- GNAT is free software; you can redistribute it and/or modify it under --
--- terms of the GNU General Public License as published by the Free Soft- --
--- ware Foundation; either version 3, or (at your option) any later ver- --
--- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- 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/>. --
--- --
--- GNAT was originally developed by the GNAT team at New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc. --
--- --
-------------------------------------------------------------------------------
-
-package body Ada.Strings.UTF_Encoding is
- use Interfaces;
-
- --------------
- -- Encoding --
- --------------
-
- function Encoding
- (Item : UTF_String;
- Default : Encoding_Scheme := UTF_8) return Encoding_Scheme
- is
- begin
- if Item'Length >= 2 then
- if Item (Item'First .. Item'First + 1) = BOM_16BE then
- return UTF_16BE;
-
- elsif Item (Item'First .. Item'First + 1) = BOM_16LE then
- return UTF_16LE;
-
- elsif Item'Length >= 3
- and then Item (Item'First .. Item'First + 2) = BOM_8
- then
- return UTF_8;
- end if;
- end if;
-
- return Default;
- end Encoding;
-
- -----------------
- -- From_UTF_16 --
- -----------------
-
- function From_UTF_16
- (Item : UTF_16_Wide_String;
- Output_Scheme : UTF_XE_Encoding;
- Output_BOM : Boolean := False) return UTF_String
- is
- BSpace : constant Natural := 2 * Boolean'Pos (Output_BOM);
- Result : UTF_String (1 .. 2 * Item'Length + BSpace);
- Len : Natural;
- C : Unsigned_16;
- Iptr : Natural;
-
- begin
- if Output_BOM then
- Result (1 .. 2) :=
- (if Output_Scheme = UTF_16BE then BOM_16BE else BOM_16LE);
- Len := 2;
- else
- Len := 0;
- end if;
-
- -- Skip input BOM
-
- Iptr := Item'First;
-
- if Iptr <= Item'Last and then Item (Iptr) = BOM_16 (1) then
- Iptr := Iptr + 1;
- end if;
-
- -- UTF-16BE case
-
- if Output_Scheme = UTF_16BE then
- while Iptr <= Item'Last loop
- C := To_Unsigned_16 (Item (Iptr));
- Result (Len + 1) := Character'Val (Shift_Right (C, 8));
- Result (Len + 2) := Character'Val (C and 16#00_FF#);
- Len := Len + 2;
- Iptr := Iptr + 1;
- end loop;
-
- -- UTF-16LE case
-
- else
- while Iptr <= Item'Last loop
- C := To_Unsigned_16 (Item (Iptr));
- Result (Len + 1) := Character'Val (C and 16#00_FF#);
- Result (Len + 2) := Character'Val (Shift_Right (C, 8));
- Len := Len + 2;
- Iptr := Iptr + 1;
- end loop;
- end if;
-
- return Result (1 .. Len);
- end From_UTF_16;
-
- --------------------------
- -- Raise_Encoding_Error --
- --------------------------
-
- procedure Raise_Encoding_Error (Index : Natural) is
- Val : constant String := Index'Img;
- begin
- raise Encoding_Error with
- "bad input at Item (" & Val (Val'First + 1 .. Val'Last) & ')';
- end Raise_Encoding_Error;
-
- ---------------
- -- To_UTF_16 --
- ---------------
-
- function To_UTF_16
- (Item : UTF_String;
- Input_Scheme : UTF_XE_Encoding;
- Output_BOM : Boolean := False) return UTF_16_Wide_String
- is
- Result : UTF_16_Wide_String (1 .. Item'Length / 2 + 1);
- Len : Natural;
- Iptr : Natural;
-
- begin
- if Item'Length mod 2 /= 0 then
- raise Encoding_Error with "UTF-16BE/LE string has odd length";
- end if;
-
- -- Deal with input BOM, skip if OK, error if bad BOM
-
- Iptr := Item'First;
-
- if Item'Length >= 2 then
- if Item (Iptr .. Iptr + 1) = BOM_16BE then
- if Input_Scheme = UTF_16BE then
- Iptr := Iptr + 2;
- else
- Raise_Encoding_Error (Iptr);
- end if;
-
- elsif Item (Iptr .. Iptr + 1) = BOM_16LE then
- if Input_Scheme = UTF_16LE then
- Iptr := Iptr + 2;
- else
- Raise_Encoding_Error (Iptr);
- end if;
-
- elsif Item'Length >= 3 and then Item (Iptr .. Iptr + 2) = BOM_8 then
- Raise_Encoding_Error (Iptr);
- end if;
- end if;
-
- -- Output BOM if specified
-
- if Output_BOM then
- Result (1) := BOM_16 (1);
- Len := 1;
- else
- Len := 0;
- end if;
-
- -- UTF-16BE case
-
- if Input_Scheme = UTF_16BE then
- while Iptr < Item'Last loop
- Len := Len + 1;
- Result (Len) :=
- Wide_Character'Val
- (Character'Pos (Item (Iptr)) * 256 +
- Character'Pos (Item (Iptr + 1)));
- Iptr := Iptr + 2;
- end loop;
-
- -- UTF-16LE case
-
- else
- while Iptr < Item'Last loop
- Len := Len + 1;
- Result (Len) :=
- Wide_Character'Val
- (Character'Pos (Item (Iptr)) +
- Character'Pos (Item (Iptr + 1)) * 256);
- Iptr := Iptr + 2;
- end loop;
- end if;
-
- return Result (1 .. Len);
- end To_UTF_16;
-
-end Ada.Strings.UTF_Encoding;