Regina 7.0 Calculation Engine
Classes | Namespaces | Macros | Functions
intutils.h File Reference

Miscellaneous utility classes for analysing the built-in integer types at compile time. More...

#include "regina-core.h"
#include "regina-config.h"
#include <cstdint>
#include <type_traits>

Classes

struct  regina::IsReginaInteger< T >
 Determines if the type T is one of Regina's own integer types (either arbitrary precision or fixed size). More...
 
struct  regina::IsReginaArbitraryPrecisionInteger< T >
 Determines if the type T is one of Regina's arbitrary precision integer types. More...
 
struct  regina::IntOfSize< bytes >
 Gives access to native integer types that hold exactly k bytes, where k may be any compile-time constant. More...
 
struct  regina::IntOfMinSize< bytes >
 Gives access to native integer types that hold at least k bytes, where k may be any compile-time constant. More...
 

Namespaces

namespace  regina
 Contains the entire Regina calculation engine.
 

Macros

#define ENABLE_MEMBER_FOR_REGINA_INTEGER(T, returnType)
 Conditionally enables a member function for a template class only when the type T is one of Regina's own integer classes. More...
 
#define INT128_AVAILABLE
 Defined if and only if native 128-bit arithmetic is available on this platform. More...
 

Functions

template<typename IntType >
constexpr int regina::bitsRequired (IntType n)
 Returns the number of bits required to store integers in the range 0,...,n-1. More...
 
template<typename IntType >
constexpr IntType regina::nextPowerOfTwo (IntType n)
 Returns the smallest integer power of two that is greater than or equal to the given argument n. More...
 

Detailed Description

Miscellaneous utility classes for analysing the built-in integer types at compile time.

Macro Definition Documentation

◆ INT128_AVAILABLE

#define INT128_AVAILABLE

Defined if and only if native 128-bit arithmetic is available on this platform.

If this macro is defined, then you can access native signed and unsigned 128-bit integers through the types IntOfSize<16>::type and IntOfSize<16>::utype respectively.

If this macro is not defined, then the types IntOfSize<16>::type and IntOfSize<16>::utype will both be void.


Copyright © 1999-2021, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).