master
  1#if 0
  2/*
  3  largeint.c
  4
  5  Large (64 bits) integer arithmetics library
  6
  7  Written by Anders Norlander <anorland@hem2.passagen.se>
  8
  9  This file is part of a free library for the Win32 API.
 10  
 11  This library is distributed in the hope that it will be useful,
 12  but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 14
 15*/
 16
 17#define __COMPILING_LARGEINT
 18
 19#include <largeint.h>
 20
 21__int64 WINAPI
 22LargeIntegerAdd (__int64 i1, __int64 i2)
 23{
 24  return i1 + i2;
 25}
 26
 27__int64 WINAPI
 28LargeIntegerSubtract (__int64 i1, __int64 i2)
 29{
 30  return i1 - i2;
 31}
 32
 33__int64 WINAPI
 34LargeIntegerArithmeticShift (__int64 i, int n)
 35{
 36  return i >> n;
 37}
 38
 39__int64 WINAPI
 40LargeIntegerShiftLeft (__int64 i, int n)
 41{
 42  return i << n;
 43}
 44
 45__int64 WINAPI
 46LargeIntegerShiftRight (__int64 i, int n)
 47{
 48  return i >> n;
 49}
 50
 51__int64 WINAPI
 52LargeIntegerNegate (__int64 i)
 53{
 54  return -i;
 55}
 56
 57__int64 WINAPI
 58ConvertLongToLargeInteger (LONG l)
 59{
 60  return (__int64) l;
 61}
 62
 63__int64 WINAPI
 64ConvertUlongToLargeInteger (ULONG ul)
 65{
 66  return _toi(_toui(ul));
 67}
 68
 69__int64 WINAPI
 70EnlargedIntegerMultiply (LONG l1, LONG l2)
 71{
 72  return _toi(l1) * _toi(l2);
 73}
 74
 75__int64 WINAPI
 76EnlargedUnsignedMultiply (ULONG ul1, ULONG ul2)
 77{
 78  return _toi(_toui(ul1) * _toui(ul2));
 79}
 80
 81__int64 WINAPI
 82ExtendedIntegerMultiply (__int64 i, LONG l)
 83{
 84  return i * _toi(l);
 85}
 86
 87__int64 WINAPI
 88LargeIntegerMultiply (__int64 i1, __int64 i2)
 89{
 90  return i1 * i2;
 91}
 92
 93__int64 WINAPI LargeIntegerDivide (__int64 i1, __int64 i2, __int64 *remainder)
 94{
 95  if (remainder)
 96    *remainder = i1 % i2;
 97  return i1 / i2;
 98}
 99
100ULONG WINAPI
101EnlargedUnsignedDivide (unsigned __int64 i1, ULONG i2, PULONG remainder)
102{
103  if (remainder)
104    *remainder = i1 % _toi(i2);
105  return i1 / _toi(i2);
106}
107__int64 WINAPI
108ExtendedLargeIntegerDivide (__int64 i1, ULONG i2, PULONG remainder)
109{
110  if (remainder)
111    *remainder = i1 % _toi(i2);
112  return i1 / _toi(i2);
113}
114
115/* FIXME: what is this function supposed to do? */
116__int64 WINAPI ExtendedMagicDivide (__int64 i1, __int64 i2, int n)
117{
118  return 0;
119}
120#endif
121