-- $Source: /home/harp/1/proto/monoBANK/winnt/win32-crt-largeint.ads,v $
-- $Revision: 1.1 $ $Date: 96/09/06 14:17:04 $ $Author: mg $
-- See end of file for Copyright (c) information.
with Win32.Winnt;
package Win32.crt.Largeint is
-- Large integer add - 64-bits + 64-bits -> 64-bits
function LargeIntegerAdd
(Addend1 : in Win32.Winnt.LARGE_INTEGER;
Addend2 : in Win32.Winnt.LARGE_INTEGER)
return Win32.Winnt.LARGE_INTEGER;
-- Enlarged integer multiply - 32-bits * 32-bits -> 64-bits
function EnlargedIntegerMultiply
(Multiplicand : in Win32.LONG;
Multiplier : in Win32.LONG)
return Win32.Winnt.LARGE_INTEGER;
-- Unsigned enlarged integer multiply - 32-bits * 32-bits -> 64-bits
function EnlargedUnsignedMultiply
(Multiplicand : in Win32.ULONG;
Multiplier : in Win32.ULONG)
return Win32.Winnt.LARGE_INTEGER;
-- Enlarged integer divide - 64-bits / 32-bits > 32-bits
function EnlargedUnsignedDivide
(Dividend : in Win32.Winnt.ULARGE_INTEGER;
Divisor : in Win32.ULONG;
Remainder: in Win32.PULONG) return Win32.ULONG;
-- Extended large integer magic divide - 64-bits / 32-bits -> 64-bits
function ExtendedMagicDivide
(Dividend : in Win32.Winnt.LARGE_INTEGER;
MagicDivisor: in Win32.Winnt.LARGE_INTEGER;
ShiftCount : in Win32.Winnt.CCHAR) return Win32.Winnt.LARGE_INTEGER;
-- Large Integer divide - 64-bits / 32-bits -> 64-bits
function ExtendedLargeIntegerDivide
(Dividend : in Win32.Winnt.LARGE_INTEGER;
Divisor : in Win32.ULONG;
Remainder: in Win32.PULONG) return Win32.Winnt.LARGE_INTEGER;
-- Large Integer divide - 64-bits / 32-bits -> 64-bits
function LargeIntegerDivide
(Dividend : in Win32.Winnt.LARGE_INTEGER;
Divisor : in Win32.Winnt.LARGE_INTEGER;
Remainder: in Win32.Winnt.PLARGE_INTEGER)
return Win32.Winnt.LARGE_INTEGER;
-- Extended integer multiply - 32-bits * 64-bits -> 64-bits
function ExtendedIntegerMultiply
(Multiplicand: in Win32.Winnt.LARGE_INTEGER;
Multiplier : in Win32.LONG) return Win32.Winnt.LARGE_INTEGER;
-- Large integer negation - -(64-bits)
function LargeIntegerNegate
(Subtrahend : in Win32.Winnt.LARGE_INTEGER)
return Win32.Winnt.LARGE_INTEGER;
-- Large integer subtract - 64-bits - 64-bits -> 64-bits.
function LargeIntegerSubtract
(Minuend : in Win32.Winnt.LARGE_INTEGER;
Subtrahend : in Win32.Winnt.LARGE_INTEGER)
return Win32.Winnt.LARGE_INTEGER;
-- Large integer and - 64-bits & 64-bits -> 64-bits.
function LargeIntegerAnd
(Source: Win32.Winnt.LARGE_INTEGER;
Mask : Win32.Winnt.LARGE_INTEGER)
return Win32.Winnt.LARGE_INTEGER;
-- Large integer conversion routines.
-- Convert signed integer to large integer.
function ConvertLongToLargeInteger
(SignedInteger : in Win32.LONG) return Win32.Winnt.LARGE_INTEGER;
-- Convert unsigned integer to large integer.
function ConvertUlongToLargeInteger
(UnsignedInteger : in Win32.ULONG) return Win32.Winnt.LARGE_INTEGER;
-- Large integer shift routines.
function LargeIntegerShiftLeft
(LargeInteger: in Win32.Winnt.LARGE_INTEGER;
ShiftCount : in Win32.Winnt.CCHAR) return Win32.Winnt.LARGE_INTEGER;
function LargeIntegerShiftRight
(LargeInteger: in Win32.Winnt.LARGE_INTEGER;
ShiftCount : in Win32.Winnt.CCHAR) return Win32.Winnt.LARGE_INTEGER;
function LargeIntegerArithmeticShift
(LargeInteger: in Win32.Winnt.LARGE_INTEGER;
ShiftCount : in Win32.Winnt.CCHAR) return Win32.Winnt.LARGE_INTEGER;
-- For comparison routines, define both the Win32 name and provide a
-- rename for convenience.
function LargeIntegerGreaterThan
(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean;
function ">"(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean
renames LargeIntegerGreaterThan;
function LargeIntegerGreaterThanOrEqualTo
(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean;
function ">="(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean
renames LargeIntegerGreaterThanOrEqualTo;
function LargeIntegerEqualTo
(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean;
function LargeIntegerNotEqualTo
(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean;
function LargeIntegerLessThan
(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean;
function "<"(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean
renames LargeIntegerLessThan;
function LargeIntegerLessThanOrEqualTo
(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean;
function "<="(X, Y: Win32.Winnt.LARGE_INTEGER) return Boolean
renames LargeIntegerLessThanOrEqualTo;
function LargeIntegerGreaterThanZero
(X: Win32.Winnt.LARGE_INTEGER) return Boolean;
function LargeIntegerGreaterOrEqualToZero
(X: Win32.Winnt.LARGE_INTEGER) return Boolean;
function LargeIntegerEqualToZero
(X: Win32.Winnt.LARGE_INTEGER) return Boolean;
function LargeIntegerNotEqualToZero
(X: Win32.Winnt.LARGE_INTEGER) return Boolean;
function LargeIntegerLessThanZero
(X: Win32.Winnt.LARGE_INTEGER) return Boolean;
function LargeIntegerLessThanOrEqualToZero
(X: Win32.Winnt.LARGE_INTEGER) return Boolean;
private
-- Directly call Win32 API when return value is not LARGE_INTEGER
pragma Import(Stdcall, LargeIntegerEqualTo, "LargeIntegerEqualTo");
pragma Import(Stdcall, LargeIntegerNotEqualTo, "LargeIntegerNotEqualTo");
pragma Import(Stdcall, EnlargedUnsignedDivide, "EnlargedUnsignedDivide");
pragma Import(Stdcall, LargeIntegerGreaterThan, "LargeIntegerGreaterThan");
pragma Import(Stdcall, LargeIntegerGreaterThanOrEqualTo,
"LargeIntegerGreaterThanOrEqualTo");
pragma Import(Stdcall, LargeIntegerLessThan, "LargeIntegerLessThan");
pragma Import(Stdcall, LargeIntegerLessThanOrEqualTo,
"LargeIntegerLessThanOrEqualTo");
pragma Import(Stdcall, LargeIntegerGreaterThanZero,
"LargeIntegerGreaterThanZero");
pragma Import(Stdcall, LargeIntegerGreaterOrEqualToZero,
"LargeIntegerGreaterOrEqualToZero");
pragma Import(Stdcall, LargeIntegerEqualToZero, "LargeIntegerEqualToZero");
pragma Import(Stdcall, LargeIntegerNotEqualToZero,
"LargeIntegerNotEqualToZero");
pragma Import(Stdcall, LargeIntegerLessThanZero,
"LargeIntegerLessThanZero");
pragma Import(Stdcall, LargeIntegerLessThanOrEqualToZero,
"LargeIntegerLessThanOrEqualToZero");
-------------------------------------------------------------------------------
--
-- THIS FILE AND ANY ASSOCIATED DOCUMENTATION IS PROVIDED WITHOUT CHARGE
-- "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. This file may be used, copied,
-- modified and distributed only by licensees of Microsoft Corporation's
-- WIN32 Software Development Kit in accordance with the terms of the
-- licensee's End-User License Agreement for Microsoft Software for the
-- WIN32 Development Kit.
--
-- Copyright (c) Intermetrics, Inc. 1995
-- Portions (c) 1985-1994 Microsoft Corporation with permission.
-- Microsoft is a registered trademark and Windows and Windows NT are
-- trademarks of Microsoft Corporation.
--
-------------------------------------------------------------------------------
end Win32.crt.Largeint;