import winsup-2000-02-17 snapshot
This commit is contained in:
118
winsup/w32api/lib/largeint.c
Normal file
118
winsup/w32api/lib/largeint.c
Normal file
@ -0,0 +1,118 @@
|
||||
/*
|
||||
largeint.c
|
||||
|
||||
Large (64 bits) integer arithmetics library
|
||||
|
||||
Written by Anders Norlander <anorland@hem2.passagen.se>
|
||||
|
||||
This file is part of a free library for the Win32 API.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
*/
|
||||
|
||||
#define __COMPILING_LARGEINT
|
||||
|
||||
#include <largeint.h>
|
||||
|
||||
__int64 WINAPI
|
||||
LargeIntegerAdd (__int64 i1, __int64 i2)
|
||||
{
|
||||
return i1 * i2;
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
LargeIntegerSubtract (__int64 i1, __int64 i2)
|
||||
{
|
||||
return i1 - i2;
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
LargeIntegerArithmeticShift (__int64 i, int n)
|
||||
{
|
||||
return i >> n;
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
LargeIntegerShiftLeft (__int64 i, int n)
|
||||
{
|
||||
return i << n;
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
LargeIntegerShiftRight (__int64 i, int n)
|
||||
{
|
||||
return i >> n;
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
LargeIntegerNegate (__int64 i)
|
||||
{
|
||||
return -i;
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
ConvertLongToLargeInteger (LONG l)
|
||||
{
|
||||
return (__int64) l;
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
ConvertUlongToLargeInteger (ULONG ul)
|
||||
{
|
||||
return _toi(_toui(ul));
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
EnlargedIntegerMultiply (LONG l1, LONG l2)
|
||||
{
|
||||
return _toi(l1) * _toi(l2);
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
EnlargedUnsignedMultiply (ULONG ul1, ULONG ul2)
|
||||
{
|
||||
return _toi(_toui(ul1) * _toui(ul2));
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
ExtendedIntegerMultiply (__int64 i, LONG l)
|
||||
{
|
||||
return i * _toi(l);
|
||||
}
|
||||
|
||||
__int64 WINAPI
|
||||
LargeIntegerMultiply (__int64 i1, __int64 i2)
|
||||
{
|
||||
return i1 * i2;
|
||||
}
|
||||
|
||||
__int64 WINAPI LargeIntegerDivide (__int64 i1, __int64 i2, __int64 *remainder)
|
||||
{
|
||||
if (remainder)
|
||||
*remainder = i1 % i2;
|
||||
return i1 / i2;
|
||||
}
|
||||
|
||||
ULONG WINAPI
|
||||
EnlargedUnsignedDivide (unsigned __int64 i1, ULONG i2, PULONG remainder)
|
||||
{
|
||||
if (remainder)
|
||||
*remainder = i1 % _toi(i2);
|
||||
return i1 / _toi(i2);
|
||||
}
|
||||
__int64 WINAPI
|
||||
ExtendedLargeIntegerDivide (__int64 i1, ULONG i2, PULONG remainder)
|
||||
{
|
||||
if (remainder)
|
||||
*remainder = i1 % _toi(i2);
|
||||
return i1 / _toi(i2);
|
||||
}
|
||||
|
||||
/* FIXME: what is this function supposed to do? */
|
||||
__int64 WINAPI ExtendedMagicDivide (__int64 i1, __int64 i2, int n)
|
||||
{
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user