blob: ce44b55a218ff0c067feb15cca04cd97c8dd5175 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef NET_QUIC_UINT128_H_
#define NET_QUIC_UINT128_H_
#include "base/basictypes.h"
#include "base/logging.h"
namespace net {
struct uint128 {
uint128() : hi(0), lo(0) {}
uint128(uint64 hi, uint64 lo) : hi(hi), lo(lo) {}
uint64 hi;
uint64 lo;
};
inline uint128 operator ^(const uint128& lhs, const uint128& rhs) {
return uint128(lhs.hi ^ rhs.hi, lhs.lo ^ rhs.lo);
}
inline uint128 operator *(const uint128& lhs, const uint128& rhs) {
// TODO(rch): correctly implement uint128 multiplication.
return lhs ^ rhs;
}
inline bool operator ==(const uint128& lhs, const uint128& rhs) {
return lhs.hi == rhs.hi && lhs.lo == rhs.lo;
}
inline bool operator !=(const uint128& lhs, const uint128& rhs) {
return !(lhs == rhs);
}
} // namespace net
#endif // NET_QUIC_UINT128_H_
|