1*c8dee2aaSAndroid Build Coastguard Worker // Copyright 2023 Google LLC 2*c8dee2aaSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3*c8dee2aaSAndroid Build Coastguard Worker 4*c8dee2aaSAndroid Build Coastguard Worker #ifndef Int96_DEFINED 5*c8dee2aaSAndroid Build Coastguard Worker #define Int96_DEFINED 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard Worker #include <cstdint> 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard Worker namespace bentleyottmann { 10*c8dee2aaSAndroid Build Coastguard Worker struct Int96 { 11*c8dee2aaSAndroid Build Coastguard Worker int64_t hi; 12*c8dee2aaSAndroid Build Coastguard Worker uint32_t lo; 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker static Int96 Make(int32_t a); 15*c8dee2aaSAndroid Build Coastguard Worker static Int96 Make(int64_t a); 16*c8dee2aaSAndroid Build Coastguard Worker }; 17*c8dee2aaSAndroid Build Coastguard Worker bool operator== (const Int96& a, const Int96& b); 18*c8dee2aaSAndroid Build Coastguard Worker bool operator< (const Int96& a, const Int96& b); 19*c8dee2aaSAndroid Build Coastguard Worker Int96 operator+ (const Int96& a, const Int96& b); 20*c8dee2aaSAndroid Build Coastguard Worker Int96 multiply(int64_t a, int32_t b); 21*c8dee2aaSAndroid Build Coastguard Worker Int96 multiply(int32_t a, int64_t b); 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker 24*c8dee2aaSAndroid Build Coastguard Worker } // namespace bentleyottmann 25*c8dee2aaSAndroid Build Coastguard Worker #endif // Int96_DEFINED 26