Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
StatusCode.h File Reference
#include "boost/preprocessor/facilities/overload.hpp"
#include <ostream>
#include <type_traits>
#include <utility>
#include "GaudiKernel/Kernel.h"
Include dependency graph for StatusCode.h:

Go to the source code of this file.

Classes

struct  is_StatusCode_enum< T >
 
class  StatusCode
 This class is used for returning status codes from appropriate routines. More...
 
class  StatusCode::Category
 The category assigned to a StatusCode. More...
 
class  StatusCode::ScopedDisableChecking
 Simple RAII class to ignore unchecked StatusCode instances in a scope. More...
 

Macros

#define STATUSCODE_ENUM_DECL(ENUM)
 Declare an enum to be used as StatusCode value. More...
 
#define STATUSCODE_ENUM_IMPL(...)   BOOST_PP_OVERLOAD( STATUSCODE_ENUM_IMPL_, __VA_ARGS__ )( __VA_ARGS__ )
 Assign a category to the StatusCode enum declared with STATUSCODE_ENUM_DECL( ENUM ) More...
 
#define STATUSCODE_ENUM_IMPL_1(ENUM)    const StatusCode::Category& is_StatusCode_enum<ENUM>::instance = StatusCode::default_category();
 
#define STATUSCODE_ENUM_IMPL_2(ENUM, CATEGORY)    const StatusCode::Category& is_StatusCode_enum<ENUM>::instance = CATEGORY{};
 

Functions

bool operator== (const StatusCode &lhs, const StatusCode &rhs)
 
StatusCode operator& (StatusCode lhs, const StatusCode &rhs)
 Ternary AND operator. More...
 
StatusCode operator| (StatusCode lhs, const StatusCode &rhs)
 Ternary OR operator. More...
 
bool & operator&= (bool &lhs, const StatusCode &sc)
 Boolean AND assignment operator. More...
 
bool & operator|= (bool &lhs, const StatusCode &sc)
 Boolean OR assignment operator. More...
 

Macro Definition Documentation

#define STATUSCODE_ENUM_DECL (   ENUM)
Value:
template <> \
static const StatusCode::Category& instance; \
};
The category assigned to a StatusCode.
Definition: StatusCode.h:63

Declare an enum to be used as StatusCode value.

Parameters
ENUMenum class

Definition at line 239 of file StatusCode.h.

#define STATUSCODE_ENUM_IMPL (   ...)    BOOST_PP_OVERLOAD( STATUSCODE_ENUM_IMPL_, __VA_ARGS__ )( __VA_ARGS__ )

Assign a category to the StatusCode enum declared with STATUSCODE_ENUM_DECL( ENUM )

Parameters
ENUMenum class
CATEGORY(optional) category, otherwise use default StatusCode category

Definition at line 248 of file StatusCode.h.

#define STATUSCODE_ENUM_IMPL_1 (   ENUM)    const StatusCode::Category& is_StatusCode_enum<ENUM>::instance = StatusCode::default_category();

Definition at line 250 of file StatusCode.h.

#define STATUSCODE_ENUM_IMPL_2 (   ENUM,
  CATEGORY 
)    const StatusCode::Category& is_StatusCode_enum<ENUM>::instance = CATEGORY{};

Definition at line 253 of file StatusCode.h.

Function Documentation

StatusCode operator& ( StatusCode  lhs,
const StatusCode rhs 
)
inline

Ternary AND operator.

Definition at line 316 of file StatusCode.h.

316 { return lhs &= rhs; }
bool& operator&= ( bool &  lhs,
const StatusCode sc 
)
inline

Boolean AND assignment operator.

Definition at line 322 of file StatusCode.h.

322 { return lhs &= sc.isSuccess(); }
bool isSuccess() const
Definition: StatusCode.h:267
bool operator== ( const StatusCode lhs,
const StatusCode rhs 
)
inline
Note
For code values 0(FAILURE) and 1(SUCCESS) the category is ignored
e.g. sc==StatusCode::SUCCESS is equivalent to sc.isSuccess() for all categories

Definition at line 284 of file StatusCode.h.

284  {
285  lhs.m_checked = true;
286  rhs.m_checked = true;
287  return ( lhs.m_code == rhs.m_code ) &&
288  ( lhs.m_code == static_cast<StatusCode::code_t>( StatusCode::ErrorCode::SUCCESS ) ||
289  lhs.m_code == static_cast<StatusCode::code_t>( StatusCode::ErrorCode::FAILURE ) ||
290  ( lhs.m_cat == rhs.m_cat ) );
291 }
code_t m_code
The status code value.
Definition: StatusCode.h:225
bool m_checked
If the StatusCode has been checked.
Definition: StatusCode.h:226
const Category * m_cat
The status code category.
Definition: StatusCode.h:224
unsigned long code_t
type of StatusCode value
Definition: StatusCode.h:52
StatusCode operator| ( StatusCode  lhs,
const StatusCode rhs 
)
inline

Ternary OR operator.

Definition at line 319 of file StatusCode.h.

319 { return lhs |= rhs; }
bool& operator|= ( bool &  lhs,
const StatusCode sc 
)
inline

Boolean OR assignment operator.

Definition at line 325 of file StatusCode.h.

325 { return lhs |= sc.isSuccess(); }
bool isSuccess() const
Definition: StatusCode.h:267