File : s-sopco5.adb


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT RUN-TIME COMPONENTS                         --
   4 --                                                                          --
   5 --           S Y S T E M . S T R I N G _ O P S _ C O N C A T _ 5            --
   6 --                                                                          --
   7 --                                 B o d y                                  --
   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 --                                                                          --
  19 --                                                                          --
  20 --                                                                          --
  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 --  NOTE: This package is obsolescent. It is no longer used by the compiler
  33 --  which now generates concatenation inline. It is retained only because
  34 --  it may be used during bootstrapping using old versions of the compiler.
  35 
  36 pragma Compiler_Unit_Warning;
  37 
  38 package body System.String_Ops_Concat_5 is
  39 
  40    ------------------
  41    -- Str_Concat_5 --
  42    ------------------
  43 
  44    function Str_Concat_5 (S1, S2, S3, S4, S5 : String) return String is
  45    begin
  46       if S1'Length = 0 then
  47          return S2 & S3 & S4 & S5;
  48 
  49       else
  50          declare
  51             L12 : constant Natural := S1'Length + S2'Length;
  52             L13 : constant Natural := L12 + S3'Length;
  53             L14 : constant Natural := L13 + S4'Length;
  54             L15 : constant Natural := L14 + S5'Length;
  55             R : String (S1'First .. S1'First + L15 - 1);
  56 
  57          begin
  58             R (S1'First       .. S1'Last)            := S1;
  59             R (S1'Last + 1    .. S1'First + L12 - 1) := S2;
  60             R (S1'First + L12 .. S1'First + L13 - 1) := S3;
  61             R (S1'First + L13 .. S1'First + L14 - 1) := S4;
  62             R (S1'First + L14 .. R'Last)             := S5;
  63             return R;
  64          end;
  65       end if;
  66    end Str_Concat_5;
  67 
  68 end System.String_Ops_Concat_5;