Elements  6.0.1
A C++ base framework for the Euclid Software.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables

Namespaces

 Examples
 
 Kernel
 
 Services
 
 System
 

Classes

class  Environment
 Python dictionary-like Environment interface. More...
 
class  Exception
 Elements base exception class. More...
 
class  Logging
 Logging API of the Elements framework. More...
 
struct  Module
 
class  Program
 Abstract class for all Elements programs. More...
 
class  ProgramManager
 Class for managing all Elements programs. More...
 
struct  Project
 
class  TypeWithSize
 
class  TypeWithSize< 4 >
 
class  TypeWithSize< 8 >
 
class  FloatingPoint
 
class  SimpleProgram
 
class  TempPath
 
class  TempDir
 
class  TempFile
 
class  OptionException
 

Typedefs

using ExitCodeType = std::underlying_type< ExitCode >::type
 Underlying type of the ExitCode class. More...
 
using TempEnv = Environment
 
using OptionsDescription = Program::OptionsDescription
 
using PositionalOptionsDescription = Program::PositionalOptionsDescription
 
using VariablesMap = Program::VariablesMap
 

Enumerations

enum  ExitCode : int {
  ExitCode::OK = 0, ExitCode::NOT_OK = 1, ExitCode::USAGE = 64, ExitCode::DATAERR = 65,
  ExitCode::NOINPUT = 66, ExitCode::NOUSER = 67, ExitCode::NOHOST = 68, ExitCode::UNAVAILABLE = 69,
  ExitCode::SOFTWARE = 70, ExitCode::OSERR = 71, ExitCode::OSFILE = 72, ExitCode::CANTCREAT = 73,
  ExitCode::IOERR = 74, ExitCode::TEMPFAIL = 75, ExitCode::PROTOCOL = 76, ExitCode::NOPERM = 77,
  ExitCode::CONFIG = 78
}
 Strongly typed exit numbers. More...
 

Functions

ELEMENTS_API std::ostreamoperator<< (std::ostream &, const Environment::Variable &)
 
ELEMENTS_API Environment::Variable operator+ (const std::string &, const Environment::Variable &)
 
template<typename Ex , typename T , typename = typename std::enable_if< std::is_base_of<Exception, typename std::remove_reference<Ex>::type>::value>::type>
auto operator<< (Ex &&ex, const T &message) -> decltype(std::forward< Ex >(ex))
 
std::ostreamoperator<< (std::ostream &stream, const Module &m)
 
template<typename TargetType , typename SourceType >
ELEMENTS_API TargetType numberCast (const SourceType &s)
 this function is a number cast. It behaves exactly as a static_cast except when casting from a floating point number to an integral one. This one is doing the correct rounding. More...
 
std::ostreamoperator<< (std::ostream &stream, const Project &p)
 
template<typename RawType >
constexpr std::size_t defaultMaxUlps ()
 
template<>
constexpr std::size_t defaultMaxUlps< float > ()
 
template<>
constexpr std::size_t defaultMaxUlps< double > ()
 
template<typename FloatType >
bool almostEqual2sComplement (ELEMENTS_UNUSED const FloatType &a, ELEMENTS_UNUSED const FloatType &b, ELEMENTS_UNUSED const std::size_t &max_ulps=0)
 
template<typename RawType >
bool isNan (const RawType &x)
 
template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool isEqual (const RawType &left, const RawType &right)
 
template<std::size_t max_ulps>
bool isEqual (const float &left, const float &right)
 
template<std::size_t max_ulps>
bool isEqual (const double &left, const double &right)
 
template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool isNotEqual (const RawType &left, const RawType &right)
 
template<std::size_t max_ulps>
bool isNotEqual (const float &left, const float &right)
 
template<std::size_t max_ulps>
bool isNotEqual (const double &left, const double &right)
 
template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool isLess (const RawType &left, const RawType &right)
 
template<std::size_t max_ulps>
bool isLess (const float &left, const float &right)
 
template<std::size_t max_ulps>
bool isLess (const double &left, const double &right)
 
template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool isGreater (const RawType &left, const RawType &right)
 
template<std::size_t max_ulps>
bool isGreater (const float &left, const float &right)
 
template<std::size_t max_ulps>
bool isGreater (const double &left, const double &right)
 
template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool isLessOrEqual (const RawType &left, const RawType &right)
 
template<std::size_t max_ulps>
bool isLessOrEqual (const float &left, const float &right)
 
template<std::size_t max_ulps>
bool isLessOrEqual (const double &left, const double &right)
 
template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool isGreaterOrEqual (const RawType &left, const RawType &right)
 
template<std::size_t max_ulps>
bool isGreaterOrEqual (const float &left, const float &right)
 
template<std::size_t max_ulps>
bool isGreaterOrEqual (const double &left, const double &right)
 
ELEMENTS_API bool almostEqual2sComplement (const float &left, const float &right, const int &max_ulps=FLT_DEFAULT_MAX_ULPS)
 This function compare 2 floats with a relative tolerance. More...
 
ELEMENTS_API bool almostEqual2sComplement (const double &left, const double &right, const int &max_ulps=DBL_DEFAULT_MAX_ULPS)
 This function compare 2 doubles with a relative tolerance. More...
 
template<typename RawType >
ELEMENTS_API bool realBitWiseEqual (const RawType &left, const RawType &right)
 This function compares 2 floating point numbers bitwise. These are the strict equivalent of the "==". They are only here for the example. More...
 
ELEMENTS_API void normalSleep (int sec)
 Simple sleep function. More...
 
ELEMENTS_API void nanoSleep (std::int64_t nsec)
 Small variation on the sleep function for nanoseconds sleep. More...
 
ELEMENTS_API std::string getVersionFromSvnKeywords (const std::string &svnUrl, const std::string &svnId)
 Function returning a version string extracted from SVN keywords. More...
 
ELEMENTS_API std::string getVersionString (const unsigned short major, const unsigned short minor, const unsigned short patch=0)
 Function converting the version numbers into a string. More...
 
unique_ptr< Layout > getLogLayout ()
 
template bool realBitWiseEqual< float > (const float &left, const float &right)
 
template bool realBitWiseEqual< double > (const double &left, const double &right)
 

Variables

constexpr std::size_t FLT_DEFAULT_MAX_ULPS {4}
 Single precision float default maximum unit in the last place. More...
 
constexpr std::size_t DBL_DEFAULT_MAX_ULPS {10}
 Double precision float default maximum unit in the last place. More...
 
ELEMENTS_API const double FLT_DEFAULT_TEST_TOLERANCE = pow(10.0, -numeric_limits<float>::digits10)
 Single precision float default test tolerance. More...
 
ELEMENTS_API const double DBL_DEFAULT_TEST_TOLERANCE = pow(10.0, -numeric_limits<double>::digits10)
 Double precision float default test tolerance. More...
 
const std::string DEFAULT_TMP_KEEP_VAR {"KEEPTEMPDIR"}
 The default environment variable name to keep the temporary object. More...
 
const std::string DEFAULT_TMP_MOTIF {"%%%%-%%%%-%%%%-%%%%"}
 The default random creation motif. More...
 
static const std::map< string,
const int > 
LOG_LEVEL
 

Typedef Documentation

Underlying type of the ExitCode class.

Definition at line 122 of file Exit.h.

Definition at line 28 of file Program.cpp.

Definition at line 29 of file Program.cpp.

using Elements::TempEnv = typedef Environment
Examples:
ElementsKernel/tests/src/Configuration_test.cpp.

Definition at line 67 of file Temporary.h.

Definition at line 66 of file ProgramManager.cpp.

Function Documentation

template<typename FloatType >
bool Elements::almostEqual2sComplement ( ELEMENTS_UNUSED const FloatType &  a,
ELEMENTS_UNUSED const FloatType &  b,
ELEMENTS_UNUSED const std::size_t max_ulps = 0 
)

Definition at line 327 of file Real.h.

bool Elements::almostEqual2sComplement ( const float &  left,
const float &  right,
const int &  max_ulps = FLT_DEFAULT_MAX_ULPS 
)

This function compare 2 floats with a relative tolerance.

The comparison is performed by casting the floating point numbers into integers and then compare their representation with a tolerance for their last bits.

Parameters
leftfirst float number
rightsecond float number
max_ulpsThe relative tolerance is expressed as ULPS (units in the last place). They are unit in the last place of the mantissa. And the recommended default value is 4 for single precision numbers.
Returns
true if the numbers are equal (or cannot be distinguished) and false otherwise.

Definition at line 39 of file Real.cpp.

bool Elements::almostEqual2sComplement ( const double &  left,
const double &  right,
const int &  max_ulps = DBL_DEFAULT_MAX_ULPS 
)

This function compare 2 doubles with a relative tolerance.

The comparison is performed by casting the floating point numbers into integers and then compare their representation with a tolerance for their last bits.

Parameters
leftfirst double number
rightsecond double number
max_ulpsThe relative tolerance is expressed as ULPS (units in the last place). They are unit in the last place of the mantissa. And the recommended default value is 10 for double precision numbers.
Returns
true if the numbers are equal (or cannot be distinguished) and false otherwise.

Definition at line 63 of file Real.cpp.

template<typename RawType >
constexpr std::size_t Elements::defaultMaxUlps ( )

Definition at line 127 of file Real.h.

References FLT_DEFAULT_MAX_ULPS.

template<>
constexpr std::size_t Elements::defaultMaxUlps< double > ( )

Definition at line 137 of file Real.h.

References DBL_DEFAULT_MAX_ULPS.

template<>
constexpr std::size_t Elements::defaultMaxUlps< float > ( )

Definition at line 132 of file Real.h.

References FLT_DEFAULT_MAX_ULPS.

unique_ptr<Layout> Elements::getLogLayout ( )

Definition at line 55 of file Logging.cpp.

References std::move().

Referenced by Elements::Logging::getLogger(), and Elements::Logging::setLogFile().

Here is the call graph for this function:

template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool Elements::isEqual ( const RawType &  left,
const RawType &  right 
)
template<std::size_t max_ulps>
bool Elements::isEqual ( const float &  left,
const float &  right 
)
inline

Definition at line 360 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isEqual ( const double &  left,
const double &  right 
)
inline

Definition at line 365 of file Real.h.

template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool Elements::isGreater ( const RawType &  left,
const RawType &  right 
)

Definition at line 406 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isGreater ( const float &  left,
const float &  right 
)
inline

Definition at line 417 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isGreater ( const double &  left,
const double &  right 
)
inline

Definition at line 422 of file Real.h.

template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool Elements::isGreaterOrEqual ( const RawType &  left,
const RawType &  right 
)

Definition at line 448 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isGreaterOrEqual ( const float &  left,
const float &  right 
)
inline

Definition at line 459 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isGreaterOrEqual ( const double &  left,
const double &  right 
)
inline

Definition at line 464 of file Real.h.

template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool Elements::isLess ( const RawType &  left,
const RawType &  right 
)

Definition at line 385 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isLess ( const float &  left,
const float &  right 
)
inline

Definition at line 396 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isLess ( const double &  left,
const double &  right 
)
inline

Definition at line 401 of file Real.h.

template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool Elements::isLessOrEqual ( const RawType &  left,
const RawType &  right 
)

Definition at line 427 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isLessOrEqual ( const float &  left,
const float &  right 
)
inline

Definition at line 438 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isLessOrEqual ( const double &  left,
const double &  right 
)
inline

Definition at line 443 of file Real.h.

template<typename RawType >
bool Elements::isNan ( const RawType &  x)

Definition at line 333 of file Real.h.

Referenced by Elements::FloatingPoint< RawType >::AlmostEquals().

template<typename RawType , std::size_t max_ulps = defaultMaxUlps<RawType>()>
bool Elements::isNotEqual ( const RawType &  left,
const RawType &  right 
)
inline

Definition at line 370 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isNotEqual ( const float &  left,
const float &  right 
)
inline

Definition at line 375 of file Real.h.

template<std::size_t max_ulps>
bool Elements::isNotEqual ( const double &  left,
const double &  right 
)
inline

Definition at line 380 of file Real.h.

void Elements::nanoSleep ( std::int64_t  nsec)

Small variation on the sleep function for nanoseconds sleep.

Author
Hubert Degaudenzi
Examples:
ElementsExamples/src/program/SimpleProgramExample.cpp.

Definition at line 39 of file Sleep.cpp.

Referenced by Elements::Examples::SimpleProgramExample::mainMethod().

void Elements::normalSleep ( int  sec)

Simple sleep function.

Small variation on the sleep function for seconds sleep.

Author
Hubert Degaudenzi

Definition at line 32 of file Sleep.cpp.

Environment::Variable Elements::operator+ ( const std::string value,
const Environment::Variable &  other 
)

Definition at line 302 of file Environment.cpp.

References Elements::Environment::Variable::env(), Elements::Environment::Variable::index(), and Elements::Environment::Variable::prepend().

Here is the call graph for this function:

std::ostream& Elements::operator<< ( std::ostream stream,
const Module &  m 
)
inline
std::ostream& Elements::operator<< ( std::ostream stream,
const Project &  p 
)
inline
ostream & Elements::operator<< ( std::ostream stream,
const Environment::Variable &  v 
)

Definition at line 295 of file Environment.cpp.

References Elements::Environment::Variable::value().

Here is the call graph for this function:

template<typename Ex , typename T , typename = typename std::enable_if< std::is_base_of<Exception, typename std::remove_reference<Ex>::type>::value>::type>
auto Elements::operator<< ( Ex &&  ex,
const T &  message 
) -> decltype(std::forward<Ex>(ex))

Definition at line 166 of file Exception.h.

template<typename RawType >
ELEMENTS_API bool Elements::realBitWiseEqual ( const RawType &  left,
const RawType &  right 
)

This function compares 2 floating point numbers bitwise. These are the strict equivalent of the "==". They are only here for the example.

Parameters
leftright hand number to compare
rightleft hand number to compare
Template Parameters
RawTyperaw type: ie float or double
Returns
true if the 2 numbers are bitwise equal

Definition at line 519 of file Real.h.

template bool Elements::realBitWiseEqual< double > ( const double &  left,
const double &  right 
)
template bool Elements::realBitWiseEqual< float > ( const float &  left,
const float &  right 
)

Variable Documentation

constexpr std::size_t Elements::DBL_DEFAULT_MAX_ULPS {10}

Double precision float default maximum unit in the last place.

Definition at line 89 of file Real.h.

Referenced by defaultMaxUlps< double >().

const double Elements::DBL_DEFAULT_TEST_TOLERANCE = pow(10.0, -numeric_limits<double>::digits10)

Double precision float default test tolerance.

Definition at line 36 of file Real.cpp.

const std::string Elements::DEFAULT_TMP_KEEP_VAR {"KEEPTEMPDIR"}

The default environment variable name to keep the temporary object.

Definition at line 38 of file Temporary.h.

const std::string Elements::DEFAULT_TMP_MOTIF {"%%%%-%%%%-%%%%-%%%%"}

The default random creation motif.

Definition at line 40 of file Temporary.h.

Referenced by Elements::TempPath::TempPath().

constexpr std::size_t Elements::FLT_DEFAULT_MAX_ULPS {4}

Single precision float default maximum unit in the last place.

Definition at line 87 of file Real.h.

Referenced by defaultMaxUlps(), and defaultMaxUlps< float >().

const double Elements::FLT_DEFAULT_TEST_TOLERANCE = pow(10.0, -numeric_limits<float>::digits10)

Single precision float default test tolerance.

Definition at line 35 of file Real.cpp.

const std::map<string, const int> Elements::LOG_LEVEL
static
Initial value:
{{"FATAL", Priority::FATAL},
{"ERROR", Priority::ERROR},
{"WARN", Priority::WARN},
{"INFO", Priority::INFO},
{"DEBUG", Priority::DEBUG}}

Definition at line 49 of file Logging.cpp.

Referenced by Elements::Logging::setLevel().