Gaudi Framework, version v21r4

Home   Generated: 7 Sep 2009

StatusCode Class Reference

#include <GaudiKernel/StatusCode.h>

Collaboration diagram for StatusCode:

Collaboration graph
[legend]

List of all members.


Detailed Description

This class is used for returning status codes from appropriate routines.

Author:
Iain Last

Pere Mato

Sebastien Ponce

Definition at line 25 of file StatusCode.h.


Public Types

enum  { FAILURE = 0, SUCCESS = 1, RECOVERABLE = 2 }

Public Member Functions

 StatusCode ()
 Constructor.
 StatusCode (unsigned long code, const IssueSeverity &sev)
 StatusCode (unsigned long code, bool checked=false)
 StatusCode (const StatusCode &rhs)
GAUDI_API ~StatusCode ()
 Destructor.
bool isSuccess () const
 Test for a status code of SUCCESS.
bool isFailure () const
 Test for a status code of FAILURE.
bool isRecoverable () const
unsigned long getCode () const
 Get the status code by value.
void setCode (unsigned long value)
 Set the status code by value.
void setChecked () const
 Ignore the checking code;.
void ignore () const
 operator unsigned long () const
 Cast operator.
GAUDI_API const IssueSeverityseverity () const
 Severity.
StatusCodeoperator= (unsigned long value)
 Assignment operator.
StatusCodeoperator= (const StatusCode &rhs)
 operator IgnoreError () const

Static Public Member Functions

static GAUDI_API void enableChecking ()
static GAUDI_API void disableChecking ()

Static Protected Member Functions

static GAUDI_API IssueSeveritycloneSeverity (const IssueSeverity *)

Protected Attributes

unsigned long d_code
 The status code.
bool m_checked
 If the Status code has been checked.
IssueSeveritym_severity
 Pointer to a IssueSeverity.

Static Protected Attributes

static bool s_checking
 Global flag to control if StatusCode need to be checked.

Friends

bool operator< (const StatusCode &a, const StatusCode &b)
 Comparison operator.
bool operator> (const StatusCode &a, const StatusCode &b)
 Comparison operator.

Member Enumeration Documentation

anonymous enum

Enumerator:
FAILURE 
SUCCESS 
RECOVERABLE 

Definition at line 27 of file StatusCode.h.

00027        {
00028     FAILURE = 0,
00029     SUCCESS = 1,
00030     RECOVERABLE = 2
00031   };


Constructor & Destructor Documentation

StatusCode::StatusCode (  )  [inline]

Constructor.

Definition at line 34 of file StatusCode.h.

00034               :
00035     d_code(SUCCESS), m_checked(false), m_severity(0) {}
  StatusCode( unsigned long code, const IssueSeverity& sev ):

StatusCode::StatusCode ( unsigned long  code,
const IssueSeverity sev 
) [inline]

Definition at line 36 of file StatusCode.h.

00036                                                             :
00037     d_code(code),m_checked(false), m_severity(cloneSeverity(&sev)) {}
  StatusCode( unsigned long code, bool checked = false ):

StatusCode::StatusCode ( unsigned long  code,
bool  checked = false 
) [inline]

Definition at line 38 of file StatusCode.h.

00038                                                         :
00039     d_code(code),m_checked(checked), m_severity(0) {}

StatusCode::StatusCode ( const StatusCode rhs  )  [inline]

Definition at line 41 of file StatusCode.h.

00041                                      :
00042     d_code(rhs.d_code), m_checked(rhs.m_checked),
00043     m_severity(rhs.m_severity ? cloneSeverity(rhs.m_severity) : 0)
00044     { rhs.m_checked = true; }

StatusCode::~StatusCode (  ) 

Destructor.

: (MCl) use backTrace(std::string&, const int, const int) instead

Definition at line 38 of file StatusCode.cpp.

00038                         {
00039   if(s_checking) {
00040 
00041     if (!m_checked ) {
00042 
00043       SmartIF<IMessageSvc> msg(Gaudi::svcLocator());
00044 
00045       SmartIF<IStatusCodeSvc> scs(Gaudi::svcLocator()->service("StatusCodeSvc"));
00046 
00047       const size_t depth = 21;
00048       void* addresses[depth];
00049 
00050       std::string lib, fnc;
00051       void* addr = 0;
00053       if (System::backTrace(addresses, depth)) {
00054 
00055         if (System::getStackLevel(addresses[2], addr, fnc, lib)) {
00056 
00057           if (scs) {
00058             scs->regFnc(fnc,lib);
00059           } else {
00060             if (msg) {
00061               MsgStream log(msg,"StatusCode");
00062               log << MSG::WARNING << "Unchecked in " << fnc << " " << lib << endmsg;
00063             } else {
00064               std::cout << MSG::WARNING << "Unchecked in " << fnc << " " << lib << std::endl;
00065             }
00066           }
00067 
00068         }
00069 
00070       }
00071     }
00072   }
00073   if (m_severity) delete m_severity;
00074 }


Member Function Documentation

bool StatusCode::isSuccess (  )  const [inline]

Test for a status code of SUCCESS.

N.B. This is the only case where a function has succeeded.

Definition at line 52 of file StatusCode.h.

00052                          {
00053     m_checked = true;
00054     return (d_code == SUCCESS);
00055   }

bool StatusCode::isFailure (  )  const [inline]

Test for a status code of FAILURE.

N.B. This is a specific type of failure where there aren't any more appropriate status codes. To test for any failure use : if ( !StatusCode.isSuccess() ) ...

Definition at line 62 of file StatusCode.h.

00062 { return !isSuccess(); }

bool StatusCode::isRecoverable (  )  const [inline]

Definition at line 63 of file StatusCode.h.

00063                              {
00064     m_checked = true;
00065     return (d_code == RECOVERABLE);
00066   }

unsigned long StatusCode::getCode (  )  const [inline]

Get the status code by value.

Definition at line 69 of file StatusCode.h.

00069                                {
00070     m_checked = true;
00071     return d_code;
00072   }

void StatusCode::setCode ( unsigned long  value  )  [inline]

Set the status code by value.

Definition at line 75 of file StatusCode.h.

00075                                      {
00076     m_checked = false;
00077     d_code = value;
00078   }

void StatusCode::setChecked (  )  const [inline]

Ignore the checking code;.

Definition at line 81 of file StatusCode.h.

00081                          {
00082     m_checked = true;
00083   }

void StatusCode::ignore (  )  const [inline]

Definition at line 84 of file StatusCode.h.

00084 { setChecked(); }

StatusCode::operator unsigned long (  )  const [inline]

Cast operator.

Definition at line 87 of file StatusCode.h.

00087 { return getCode(); }

const IssueSeverity & StatusCode::severity (  )  const

Severity.

Definition at line 32 of file StatusCode.cpp.

00032                                                 {
00033   static IssueSeverity dummy;
00034   if (m_severity) return *m_severity;
00035   else            return dummy;
00036 }

StatusCode& StatusCode::operator= ( unsigned long  value  )  [inline]

Assignment operator.

Definition at line 93 of file StatusCode.h.

00093                                              {
00094     setCode(value);
00095     return *this;
00096   }

StatusCode& StatusCode::operator= ( const StatusCode rhs  )  [inline]

Definition at line 97 of file StatusCode.h.

00097                                               {
00098     if (this == &rhs) return *this; // Protection against self-assignment
00099     d_code = rhs.d_code;
00100     m_checked = rhs.m_checked;
00101     rhs.m_checked = true;
00102     if (m_severity) delete m_severity;
00103     m_severity = rhs.m_severity ? cloneSeverity(rhs.m_severity): 0;
00104     return *this;
00105   }

StatusCode::operator IgnoreError (  )  const [inline]

Definition at line 118 of file StatusCode.h.

00118                                {
00119     m_checked = true;
00120     return IgnoreError();
00121   }

void StatusCode::enableChecking (  )  [static]

Definition at line 18 of file StatusCode.cpp.

00018                                 {
00019   s_checking = true;
00020 }

void StatusCode::disableChecking (  )  [static]

Definition at line 22 of file StatusCode.cpp.

00022                                  {
00023   s_checking = false;
00024 }

IssueSeverity * StatusCode::cloneSeverity ( const IssueSeverity sev  )  [static, protected]

Definition at line 26 of file StatusCode.cpp.

00027 {
00028   if( sev ) return new IssueSeverity(*sev);
00029   else      return 0;
00030 }


Friends And Related Function Documentation

bool operator< ( const StatusCode a,
const StatusCode b 
) [friend]

Comparison operator.

Definition at line 108 of file StatusCode.h.

00108                                                                      {
00109     return a.d_code < b.d_code;
00110   }

bool operator> ( const StatusCode a,
const StatusCode b 
) [friend]

Comparison operator.

Definition at line 113 of file StatusCode.h.

00113                                                                      {
00114     return a.d_code > b.d_code;
00115   }


Member Data Documentation

unsigned long StatusCode::d_code [protected]

The status code.

The status code

Definition at line 129 of file StatusCode.h.

bool StatusCode::m_checked [mutable, protected]

If the Status code has been checked.

Definition at line 130 of file StatusCode.h.

Pointer to a IssueSeverity.

Definition at line 131 of file StatusCode.h.

bool StatusCode::s_checking [static, protected]

Global flag to control if StatusCode need to be checked.

Definition at line 133 of file StatusCode.h.


The documentation for this class was generated from the following files:

Generated at Mon Sep 7 18:22:23 2009 for Gaudi Framework, version v21r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004