Skip to content

Commit

Permalink
Merge branch 'topic/vadim/concat' into 'master'
Browse files Browse the repository at this point in the history
Concatenation of Virtual_String and Virtual_Character.

Closes #216

See merge request eng/ide/VSS!285
  • Loading branch information
godunko committed Sep 13, 2023
2 parents 76e8614 + 5752fe1 commit 1c49a43
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 10 deletions.
46 changes: 46 additions & 0 deletions source/text/implementation/vss-strings.adb
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,52 @@ package body VSS.Strings is
end return;
end "&";

---------
-- "&" --
---------

function "&"
(Left : Virtual_String;
Right : VSS.Characters.Virtual_Character) return Virtual_String is
begin
return Result : Virtual_String do
declare
Offset : VSS.Implementation.Strings.Cursor_Offset;

begin
Result.Data := Left.Data;
VSS.Implementation.Strings.Reference (Result.Data);
VSS.Implementation.Strings.Handler (Result.Data).Append
(Result.Data,
VSS.Characters.Virtual_Character'Pos (Right),
Offset);
end;
end return;
end "&";

---------
-- "&" --
---------

function "&"
(Left : VSS.Characters.Virtual_Character;
Right : Virtual_String) return Virtual_String is
begin
return Result : Virtual_String do
declare
Offset : VSS.Implementation.Strings.Cursor_Offset;

begin
VSS.Implementation.Strings.Handler (Result.Data).Append
(Result.Data,
VSS.Characters.Virtual_Character'Pos (Left),
Offset);
VSS.Implementation.Strings.Handler (Result.Data).Append
(Result.Data, Right.Data, Offset);
end;
end return;
end "&";

---------
-- "*" --
---------
Expand Down
17 changes: 7 additions & 10 deletions source/text/vss-strings.ads
Original file line number Diff line number Diff line change
Expand Up @@ -210,16 +210,13 @@ package VSS.Strings is
function "&"
(Left : Virtual_String;
Right : Virtual_String) return Virtual_String;
-- function "&"
-- (Left : Virtual_String;
-- Right : VSS.Characters.Virtual_Character) return Virtual_String;
-- function "&"
-- (Left : VSS.Characters.Virtual_Character;
-- Right : Virtual_String) return Virtual_String;
-- function "&"
-- (Left : VSS.Characters.Virtual_Character;
-- Right : VSS.Characters.Virtual_Character) return Virtual_String;
-- -- Concatenation operator for virtual string and virtual characters.
function "&"
(Left : Virtual_String;
Right : VSS.Characters.Virtual_Character) return Virtual_String;
function "&"
(Left : VSS.Characters.Virtual_Character;
Right : Virtual_String) return Virtual_String;
-- Concatenation operator for virtual string and virtual characters.

function "*"
(Left : Character_Count;
Expand Down
32 changes: 32 additions & 0 deletions testsuite/text/test_string-test_ampersand_character.adb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
--
-- Copyright (C) 2023, AdaCore
--
-- SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
--

with VSS.Characters;

separate (Test_String)
procedure Test_Ampersand_Character is

use type VSS.Strings.Virtual_String;

begin
declare
L : constant VSS.Strings.Virtual_String := "AB";
R : constant VSS.Characters.Virtual_Character := 'C';
V : constant VSS.Strings.Virtual_String := L & R;

begin
Test_Support.Assert (V = "ABC");
end;

declare
R : constant VSS.Strings.Virtual_String := "BC";
L : constant VSS.Characters.Virtual_Character := 'A';
V : constant VSS.Strings.Virtual_String := L & R;

begin
Test_Support.Assert (V = "ABC");
end;
end Test_Ampersand_Character;
4 changes: 4 additions & 0 deletions testsuite/text/test_string.adb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ with Test_Support;

procedure Test_String is

procedure Test_Ampersand_Character;
procedure Test_Asterisk_Character;
procedure Test_Ends_With;
procedure Test_Prepend;
Expand All @@ -23,6 +24,8 @@ procedure Test_String is
--
-- This test requires valgrind.

procedure Test_Ampersand_Character is separate;

procedure Test_Asterisk_Character is separate;

procedure Test_Ends_With is separate;
Expand Down Expand Up @@ -201,6 +204,7 @@ procedure Test_String is
end Test_V705_011;

begin
Test_Ampersand_Character;
Test_Asterisk_Character;
Test_Ends_With;
Test_Prepend;
Expand Down

0 comments on commit 1c49a43

Please sign in to comment.