windows-misc-20050722
[openafs.git] / src / WINNT / afsd / largeint95.h
1 #ifndef LARGEINT_H
2 #define LARGEINT_H
3
4 typedef struct {
5   unsigned long LowPart;
6   unsigned long HighPart;
7 } LARGE_INTEGER;
8
9 LARGE_INTEGER LargeIntegerAdd(LARGE_INTEGER a, LARGE_INTEGER b);
10 LARGE_INTEGER LargeIntegerSubtract(LARGE_INTEGER a, LARGE_INTEGER b);
11 /*int LargeIntegerGreaterThan(LARGE_INTEGER a, LARGE_INTEGER b);
12 int LargeIntegerGreaterThanOrEqualTo(LARGE_INTEGER a, LARGE_INTEGER b);
13 int LargeIntegerEqualTo(LARGE_INTEGER a, LARGE_INTEGER b);
14 int LargeIntegerGreaterOrEqualToZero(LARGE_INTEGER a);
15 int LargeIntegerLessThanZero(LARGE_INTEGER a);*/
16 LARGE_INTEGER ConvertLongToLargeInteger(unsigned long a);
17 LARGE_INTEGER LargeIntegerMultiplyByLong(LARGE_INTEGER a, unsigned long b);
18 unsigned long LargeIntegerDivideByLong(LARGE_INTEGER a, unsigned long b);
19
20 #define LargeIntegerGreaterThan(a, b) \
21  ((a).HighPart > (b).HighPart || \
22   ((a).HighPart == (b).HighPart && (a).LowPart > (b).LowPart))
23
24 #define LargeIntegerGreaterThanOrEqualTo(a, b) \
25  ((a).HighPart > (b).HighPart || \
26   ((a).HighPart == (b).HighPart && (a).LowPart >= (b).LowPart))
27   
28 #define LargeIntegerLessThan(a, b) \
29  ((a).HighPart < (b).HighPart || \
30   ((a).HighPart == (b).HighPart && (a).LowPart < (b).LowPart))
31
32 #define LargeIntegerLessThanOrEqualTo(a, b) \
33  ((a).HighPart < (b).HighPart || \
34   ((a).HighPart == (b).HighPart && (a).LowPart <= (b).LowPart))
35
36 #define LargeIntegerEqualTo(a, b) \
37   ((a).HighPart == (b).HighPart && (a).LowPart == (b).LowPart)
38   
39 #define LargeIntegerGreaterOrEqualToZero(a) ((a).HighPart >= 0)
40   
41 #define LargeIntegerLessThanZero(a) ((a).HighPart < 0)
42
43 #define LargeIntegerNotEqualToZero(a) ((a).HighPart || (a).LowPart)
44
45 #endif