-- $Source: /home/harp/1/proto/monoBANK/winnt/stdarg.ads,v $ -- $Revision: 1.11 $ $Date: 96/09/04 16:35:46 $ $Author: mg $ with Ada.Finalization, Interfaces.C, Interfaces.C.Strings, System; package Stdarg is -- ***************************************** -- Setting up variable-length argument lists -- ***************************************** MaxArguments: constant := 50; -- "&" and Concat functions raise Constraint_Error if more than -- MaxArguments integer paramters are catenated. -- If you change this, change it in var.c also. type ArgList is private; -- An empty arglist, to be used in constructors: function Empty return ArgList; generic type T is private; T_Is_Modular: Boolean := False; T_Is_Float : Boolean := False; function Concat(Args: ArgList; Arg: T) return ArgList; subtype C_Param is Interfaces.C.Long; private type ArgVector is array(Integer range <>) of aliased C_Param; type ArgBlock is record Vector : ArgVector(1..MaxArguments) := (others => 0); RefCount : Natural := 1; CurrentArgs : Natural := 0; FirstHole : Natural := 0; end record; AS: constant := MaxArguments*C_Param'Size; NS: constant := Natural'Size; -- On HP target this record must be aligned at mod 8, like a double. -- Maybe on Alpha too, not sure. -- On other targets the 8 could be changed to 4. -- For i386/NT 4 is the size to use for ArgBlock use record at mod 4; Vector at 0 range 0..AS-1; RefCount at AS range 0..NS-1; CurrentArgs at AS+NS range 0..NS-1; FirstHole at AS+NS+NS range 0..NS-1; end record; type ArgBlockP is access ArgBlock; type ArgList is new Ada.Finalization.Controlled with record Contents: ArgBlockP; end record; -- ************** -- Memory Control -- ************** -- procedure Initialize (A: in out ArgList); -- not needed procedure Adjust (A: in out ArgList); procedure Finalize (A: in out ArgList); ------------------------------------------------------------------------------- -- -- THIS FILE AND ANY ASSOCIATED DOCUMENTATION IS FURNISHED "AS IS" WITHOUT -- WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -- TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR -- PURPOSE. The user assumes the entire risk as to the accuracy and the -- use of this file. -- -- Copyright (c) Intermetrics, Inc. 1995 -- Royalty-free, unlimited, worldwide, non-exclusive use, modification, -- reproduction and further distribution of this file is permitted. -- ------------------------------------------------------------------------------- end Stdarg;