home *** CD-ROM | disk | FTP | other *** search
- ------------------------------------------------------------------------------
- -- --
- -- GNAT COMPILER COMPONENTS --
- -- --
- -- I N T E R F A C E S . C . P O I N T E R S --
- -- --
- -- S p e c --
- -- --
- -- $Revision: 1.5 $ --
- -- --
- -- This specification is adapted from the Ada Reference Manual for use with --
- -- GNAT. In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification, provided that if you redistribute a --
- -- modified version, any changes that you have made are clearly indicated. --
- -- --
- ------------------------------------------------------------------------------
-
- generic
- type Index is (<>);
- type Element is private;
- type Element_Array is array (Index range <>) of aliased Element;
- Default_Terminator : Element;
-
- package Interfaces.C.Pointers is
- pragma Preelaborate (Pointers);
-
- type Pointer is access all Element;
-
- function Value
- (Ref : in Pointer;
- Terminator : in Element := Default_Terminator)
- return Element_Array;
-
- function Value
- (Ref : in Pointer;
- Length : in ptrdiff_t)
- return Element_Array;
-
- Pointer_Error : exception;
-
- --------------------------------
- -- C-style Pointer Arithmetic --
- --------------------------------
-
- function "+" (Left : in Pointer; Right : in ptrdiff_t) return Pointer;
- function "+" (Left : in ptrdiff_t; Right : in Pointer) return Pointer;
- function "-" (Left : in Pointer; Right : in ptrdiff_t) return Pointer;
- function "-" (Left : in Pointer; Right : in Pointer) return ptrdiff_t;
-
- procedure Increment (Ref : in out Pointer);
- procedure Decrement (Ref : in out Pointer);
-
- pragma Convention (Intrinsic, "+");
- pragma Convention (Intrinsic, "-");
- pragma Convention (Intrinsic, Increment);
- pragma Convention (Intrinsic, Decrement);
-
- function Virtual_Length
- (Ref : in Pointer;
- Terminator : in Element := Default_Terminator)
- return ptrdiff_t;
-
- procedure Copy_Terminated_Array
- (Source : in Pointer;
- Target : in Pointer;
- Limit : in ptrdiff_t := ptrdiff_t'Last;
- Terminator : in Element := Default_Terminator);
-
- procedure Copy_Array
- (Source : in Pointer;
- Target : in Pointer;
- Length : in ptrdiff_t);
-
- private
- pragma Inline ("+");
- pragma Inline ("-");
- pragma Inline (Decrement);
- pragma Inline (Increment);
-
- end Interfaces.C.Pointers;
-