1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT RUN-TIME COMPONENTS                         --
4--                                                                          --
5--                       S Y S T E M . W C H _ J I S                        --
6--                                                                          --
7--                                 S p e c                                  --
8--                                                                          --
9--          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
10--                                                                          --
11-- GNAT is free software;  you can  redistribute it  and/or modify it under --
12-- terms of the  GNU General Public License as published  by the Free Soft- --
13-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
14-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
17--                                                                          --
18-- As a special exception under Section 7 of GPL version 3, you are granted --
19-- additional permissions described in the GCC Runtime Library Exception,   --
20-- version 3.1, as published by the Free Software Foundation.               --
21--                                                                          --
22-- You should have received a copy of the GNU General Public License and    --
23-- a copy of the GCC Runtime Library Exception along with this program;     --
24-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
25-- <http://www.gnu.org/licenses/>.                                          --
26--                                                                          --
27-- GNAT was originally developed  by the GNAT team at  New York University. --
28-- Extensive contributions were provided by Ada Core Technologies Inc.      --
29--                                                                          --
30------------------------------------------------------------------------------
31
32--  This package contains routines used for converting between internal
33--  JIS codes and the two external forms we support (EUC and Shift-JIS)
34
35pragma Compiler_Unit_Warning;
36
37package System.WCh_JIS is
38   pragma Pure;
39
40   function EUC_To_JIS (EUC1, EUC2 : Character) return Wide_Character;
41   --  Given the two bytes of a EUC representation, return the
42   --  corresponding JIS code wide character. Raises Constraint_Error
43   --  if the two characters are not a valid EUC encoding.
44
45   procedure JIS_To_EUC
46     (J    : Wide_Character;
47      EUC1 : out Character;
48      EUC2 : out Character);
49
50   --  Given a wide character in JIS form, produce the corresponding
51   --  two bytes of the EUC representation of this character. This is
52   --  only used if J is not in the normal ASCII range, i.e. on entry
53   --  we know that Wide_Character'Pos (J) >= 16#0080# and that we
54   --  thus require a two byte EUC representation (ASCII codes appear
55   --  unchanged as a single byte in EUC). No error checking is performed,
56   --  the input code is assumed to be in an appropriate range.
57
58   procedure JIS_To_Shift_JIS
59     (J   : Wide_Character;
60      SJ1 : out Character;
61      SJ2 : out Character);
62   --  Given a wide character code in JIS form, produce the corresponding
63   --  two bytes of the Shift-JIS representation of this character. This
64   --  is only used if J is not in the normal ASCII range, i.e. on entry
65   --  we know that Wide_Character'Pos (J) >= 16#0080# and that we
66   --  thus require a two byte EUC representation (ASCII codes appear
67   --  unchanged as a single byte in EUC). No error checking is performed,
68   --  the input code is assumed to be in an appropriate range (note in
69   --  particular that input codes in the range 16#0080#-16#00FF#, i.e.
70   --  Hankaku Kana, do not appear, since Shift JIS has no representation
71   --  for such codes.
72
73   function Shift_JIS_To_JIS (SJ1, SJ2 : Character) return Wide_Character;
74   --  Given the two bytes of a Shift-JIS representation, return the
75   --  corresponding JIS code wide character. Raises Constraint_Error if
76   --  the two characters are not a valid shift-JIS encoding.
77
78end System.WCh_JIS;
79