Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

gnException.cpp

Go to the documentation of this file.
00001 #include "gn/gnException.h"
00002 #include <iostream>
00003 
00004 void gnException::AddCaller(const char* const function)
00005 {
00006         string func(function);
00007         string pretty_func = func.substr(0, func.find('(')+1);
00008         pretty_func += func.substr(func.rfind(')'), func.length());
00009         function_trace.push_back(pretty_func);
00010 }
00011 
00012 ostream& operator<<(ostream& os, const gnException& gne){ 
00013         //write exception to stream.
00014         os << "Exception " << gne.m_code.GetName() << " thrown ";
00015         list<string>::const_iterator func_iter = gne.function_trace.begin();
00016 
00017         //print the original function
00018         if(func_iter != gne.function_trace.end()){
00019                 os << "from\n" << *func_iter << " in " << gne.m_file << " " << gne.m_line;
00020                 func_iter++;
00021         }
00022 
00023         //print the call stack
00024         while(func_iter != gne.function_trace.end()){
00025                 os << "\nCalled by " << *func_iter;
00026                 func_iter++;
00027         }
00028         if(gne.m_message.length() > 0)
00029                 os <<"\n" << gne.m_message;
00030         os << "\n";
00031         return os;
00032 }

Generated on Fri May 9 12:57:49 2003 for libGenome by doxygen1.3-rc3