Gaudi Framework, version v22r2

Home   Generated: Tue May 10 2011

StatusCode.cpp

Go to the documentation of this file.
00001 #define GAUDIKERNEL_STATUSCODE_CPP 1
00002 
00003 #include "GaudiKernel/StatusCode.h"
00004 #include "GaudiKernel/System.h"
00005 #include "GaudiKernel/Bootstrap.h"
00006 #include "GaudiKernel/IMessageSvc.h"
00007 #include "GaudiKernel/IStatusCodeSvc.h"
00008 #include "GaudiKernel/ISvcLocator.h"
00009 #include "GaudiKernel/MsgStream.h"
00010 #include "GaudiKernel/IssueSeverity.h"
00011 #include <fstream>
00012 #include <iostream>
00013 #include <sstream>
00014 #include <stdlib.h>
00015 
00016 bool StatusCode::s_checking(false);
00017 
00018 void StatusCode::enableChecking() {
00019   s_checking = true;
00020 }
00021 
00022 void StatusCode::disableChecking() {
00023   s_checking = false;
00024 }
00025 
00026 const IssueSeverity& StatusCode::severity() const {
00027   static IssueSeverity dummy;
00028   if (m_severity) return *m_severity;
00029   else            return dummy;
00030 }
00031 
00032 StatusCode::~StatusCode() {
00033   if(s_checking) {
00034 
00035     if (!m_checked && !GaudiException::s_proc) {
00036 
00037       SmartIF<IMessageSvc> msg(Gaudi::svcLocator());
00038 
00039       SmartIF<IStatusCodeSvc> scs(Gaudi::svcLocator()->service("StatusCodeSvc"));
00040 
00041       const size_t depth = 21;
00042       void* addresses[depth];
00043 
00044       std::string lib, fnc;
00045       void* addr = 0;
00047       if (System::backTrace(addresses, depth)) {
00048 
00049         if (System::getStackLevel(addresses[2], addr, fnc, lib)) {
00050 
00051           if (scs) {
00052             scs->regFnc(fnc,lib);
00053           } else {
00054             if (msg) {
00055               MsgStream log(msg,"StatusCode");
00056               log << MSG::WARNING << "Unchecked in " << fnc << " " << lib << endmsg;
00057             } else {
00058               std::cout << MSG::WARNING << "Unchecked in " << fnc << " " << lib << std::endl;
00059             }
00060           }
00061 
00062         }
00063 
00064       }
00065     }
00066   }
00067 }
00068 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Tue May 10 2011 18:53:46 for Gaudi Framework, version v22r2 by Doxygen version 1.7.2 written by Dimitri van Heesch, © 1997-2004