]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/ada/i-cpoint.adb
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / ada / i-cpoint.adb
diff --git a/gcc/ada/i-cpoint.adb b/gcc/ada/i-cpoint.adb
deleted file mode 100644 (file)
index a51d81f..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                I N T E R F A C E S . C . P O I N T E R S                 --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---                            $Revision: 1.1.16.1 $
---                                                                          --
---          Copyright (C) 1992-2001 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 2,  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.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT;  see file COPYING.  If not, write --
--- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
--- MA 02111-1307, USA.                                                      --
---                                                                          --
--- As a special exception,  if other files  instantiate  generics from this --
--- unit, or you link  this unit with other files  to produce an executable, --
--- this  unit  does not  by itself cause  the resulting  executable  to  be --
--- covered  by the  GNU  General  Public  License.  This exception does not --
--- however invalidate  any other reasons why  the executable file  might be --
--- covered by the  GNU Public License.                                      --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
-with Interfaces.C.Strings; use Interfaces.C.Strings;
-with System;               use System;
-
-with Unchecked_Conversion;
-
-package body Interfaces.C.Pointers is
-
-   type Addr is mod Memory_Size;
-
-   function To_Pointer is new Unchecked_Conversion (Addr,      Pointer);
-   function To_Addr    is new Unchecked_Conversion (Pointer,   Addr);
-   function To_Addr    is new Unchecked_Conversion (ptrdiff_t, Addr);
-   function To_Ptrdiff is new Unchecked_Conversion (Addr,      ptrdiff_t);
-
-   Elmt_Size : constant ptrdiff_t :=
-                 (Element_Array'Component_Size
-                   + Storage_Unit - 1) / Storage_Unit;
-
-   subtype Index_Base is Index'Base;
-
-   ---------
-   -- "+" --
-   ---------
-
-   function "+" (Left : in Pointer;   Right : in ptrdiff_t) return Pointer is
-   begin
-      if Left = null then
-         raise Pointer_Error;
-      end if;
-
-      return To_Pointer (To_Addr (Left) + To_Addr (Elmt_Size * Right));
-   end "+";
-
-   function "+" (Left : in ptrdiff_t; Right : in Pointer) return Pointer is
-   begin
-      if Right = null then
-         raise Pointer_Error;
-      end if;
-
-      return To_Pointer (To_Addr (Elmt_Size * Left) + To_Addr (Right));
-   end "+";
-
-   ---------
-   -- "-" --
-   ---------
-
-   function "-" (Left : in Pointer; Right : in ptrdiff_t) return Pointer is
-   begin
-      if Left = null then
-         raise Pointer_Error;
-      end if;
-
-      return To_Pointer (To_Addr (Left) - To_Addr (Right * Elmt_Size));
-   end "-";
-
-   function "-" (Left : in Pointer; Right : in Pointer) return ptrdiff_t is
-   begin
-      if Left = null or else Right = null then
-         raise Pointer_Error;
-      end if;
-
-      return To_Ptrdiff (To_Addr (Left) - To_Addr (Right)) / Elmt_Size;
-   end "-";
-
-   ----------------
-   -- Copy_Array --
-   ----------------
-
-   procedure Copy_Array
-     (Source  : in Pointer;
-      Target  : in Pointer;
-      Length  : in ptrdiff_t)
-   is
-      T : Pointer := Target;
-      S : Pointer := Source;
-
-   begin
-      if S = null or else T = null then
-         raise Dereference_Error;
-
-      else
-         for J in 1 .. Length loop
-            T.all := S.all;
-            Increment (T);
-            Increment (S);
-         end loop;
-      end if;
-   end Copy_Array;
-
-   ---------------------------
-   -- Copy_Terminated_Array --
-   ---------------------------
-
-   procedure Copy_Terminated_Array
-     (Source     : in Pointer;
-      Target     : in Pointer;
-      Limit      : in ptrdiff_t := ptrdiff_t'Last;
-      Terminator : in Element := Default_Terminator)
-   is
-      S : Pointer   := Source;
-      T : Pointer   := Target;
-      L : ptrdiff_t := Limit;
-
-   begin
-      if S = null or else T = null then
-         raise Dereference_Error;
-
-      else
-         while L > 0 loop
-            T.all := S.all;
-            exit when T.all = Terminator;
-            Increment (T);
-            Increment (S);
-            L := L - 1;
-         end loop;
-      end if;
-   end Copy_Terminated_Array;
-
-   ---------------
-   -- Decrement --
-   ---------------
-
-   procedure Decrement (Ref : in out Pointer) is
-   begin
-      Ref := Ref - 1;
-   end Decrement;
-
-   ---------------
-   -- Increment --
-   ---------------
-
-   procedure Increment (Ref : in out Pointer) is
-   begin
-      Ref := Ref + 1;
-   end Increment;
-
-   -----------
-   -- Value --
-   -----------
-
-   function Value
-     (Ref        : in Pointer;
-      Terminator : in Element := Default_Terminator)
-      return       Element_Array
-   is
-      P : Pointer;
-      L : constant Index_Base := Index'First;
-      H : Index_Base;
-
-   begin
-      if Ref = null then
-         raise Dereference_Error;
-
-      else
-         H := L;
-         P := Ref;
-
-         loop
-            exit when P.all = Terminator;
-            H := Index_Base'Succ (H);
-            Increment (P);
-         end loop;
-
-         declare
-            subtype A is Element_Array (L .. H);
-
-            type PA is access A;
-            function To_PA is new Unchecked_Conversion (Pointer, PA);
-
-         begin
-            return To_PA (Ref).all;
-         end;
-      end if;
-   end Value;
-
-   function Value
-     (Ref    : in Pointer;
-      Length : in ptrdiff_t)
-      return   Element_Array
-   is
-      L : Index_Base;
-      H : Index_Base;
-
-   begin
-      if Ref = null then
-         raise Dereference_Error;
-
-      --  For length zero, we need to return a null slice, but we can't make
-      --  the bounds of this slice Index'First, since this could cause a
-      --  Constraint_Error if Index'First = Index'Base'First.
-
-      elsif Length <= 0 then
-         declare
-            pragma Warnings (Off); -- kill warnings since X not assigned
-            X : Element_Array (Index'Succ (Index'First) .. Index'First);
-            pragma Warnings (On);
-
-         begin
-            return X;
-         end;
-
-      --  Normal case (length non-zero)
-
-      else
-         L := Index'First;
-         H := Index'Val (Index'Pos (Index'First) + Length - 1);
-
-         declare
-            subtype A is Element_Array (L .. H);
-
-            type PA is access A;
-            function To_PA is new Unchecked_Conversion (Pointer, PA);
-
-         begin
-            return To_PA (Ref).all;
-         end;
-      end if;
-   end Value;
-
-   --------------------
-   -- Virtual_Length --
-   --------------------
-
-   function Virtual_Length
-     (Ref        : in Pointer;
-      Terminator : in Element := Default_Terminator)
-      return       ptrdiff_t
-   is
-      P : Pointer;
-      C : ptrdiff_t;
-
-   begin
-      if Ref = null then
-         raise Dereference_Error;
-
-      else
-         C := 0;
-         P := Ref;
-
-         while P.all /= Terminator loop
-            C := C + 1;
-            Increment (P);
-         end loop;
-
-         return C;
-      end if;
-   end Virtual_Length;
-
-end Interfaces.C.Pointers;