Commit e6d9df3c by Robert Dewar Committed by Arnaud Charlet

exp_imgv.adb (Expand_Image_Attribute): Generate extra boolean parameter in call…

exp_imgv.adb (Expand_Image_Attribute): Generate extra boolean parameter in call to Image_Wide_Character.

2005-12-05  Robert Dewar  <dewar@adacore.com>

	* exp_imgv.adb (Expand_Image_Attribute): Generate extra boolean
	parameter in call to Image_Wide_Character.

	* s-imgwch.ads, s-imgwch.adb (Image_Wide_Character): Add boolean
	parameter Ada_2005 to deal with annoying FFFE/FFFF inconsistency.
	(Image_Wide_Character): Add boolean parameter Ada_2005 to deal with
	annoying FFFE/FFFF inconsistency.

From-SVN: r108293
parent d82e89e9
......@@ -32,6 +32,7 @@ with Exp_Util; use Exp_Util;
with Namet; use Namet;
with Nmake; use Nmake;
with Nlists; use Nlists;
with Opt; use Opt;
with Rtsfind; use Rtsfind;
with Sem_Res; use Sem_Res;
with Sinfo; use Sinfo;
......@@ -148,7 +149,6 @@ package body Exp_Imgv is
Make_Aggregate (Loc,
Expressions => Ind))),
Suppress => All_Checks);
end Build_Enumeration_Image_Tables;
----------------------------
......@@ -191,6 +191,7 @@ package body Exp_Imgv is
-- For types whose root type is Wide_Character
-- xx = Wide_Character
-- tv = Wide_Character (Expr)
-- pm = Boolean, true if Ada 2005 mode, False otherwise
-- For types whose root type is Wide_Wide_Character
-- xx = Wide_Wide_haracter
......@@ -398,6 +399,12 @@ package body Exp_Imgv is
Set_Conversion_OK (First (Arglist));
Set_Etype (First (Arglist), Tent);
-- For Wide_Character, append Ada 2005 indication
elsif Rtyp = Standard_Wide_Character then
Append_To (Arglist,
New_Reference_To (Boolean_Literals (Ada_Version >= Ada_05), Loc));
end if;
Rewrite (N,
......
......@@ -42,9 +42,24 @@ package body System.Img_WChar is
--------------------------
function Image_Wide_Character
(V : Wide_Character) return String
(V : Wide_Character;
Ada_2005 : Boolean) return String
is
begin
-- Annoying Ada 95 incompatibility with FFFE/FFFF
if V >= Wide_Character'Val (16#FFFE#)
and then not Ada_2005
then
if V = Wide_Character'Val (16#FFFE#) then
return "FFFE";
else
return "FFFF";
end if;
end if;
-- Normal case, same as Wide_Wide_Character
return
Image_Wide_Wide_Character
(Wide_Wide_Character'Val (Wide_Character'Pos (V)));
......
......@@ -36,8 +36,12 @@
package System.Img_WChar is
pragma Pure;
function Image_Wide_Character (V : Wide_Character) return String;
-- Computes Wide_Character'Image (V) and returns the computed result
function Image_Wide_Character
(V : Wide_Character;
Ada_2005 : Boolean) return String;
-- Computes Wide_Character'Image (V) and returns the computed result. The
-- parameter Ada_2005 is True if operating in Ada 2005 mode (or beyond).
-- This is needed for the annoying FFFE/FFFF incompatibility.
function Image_Wide_Wide_Character (V : Wide_Wide_Character) return String;
-- Computes Wide_Wide_Character'Image (V) and returns the computed result
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment