# HG changeset patch # User alpar # Date 1153229399 0 # Node ID 38ec4a930c05a61b6617ada42d1d5ee28d7aba76 # Parent cce8ac91c08c6092e5de0930952464efe5955a9e exceptionName() has been thrown away diff -r cce8ac91c08c -r 38ec4a930c05 lemon/bellman_ford.h --- a/lemon/bellman_ford.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/bellman_ford.h Tue Jul 18 13:29:59 2006 +0000 @@ -192,7 +192,7 @@ class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::BellmanFord::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/bfs.h --- a/lemon/bfs.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/bfs.h Tue Jul 18 13:29:59 2006 +0000 @@ -142,7 +142,7 @@ */ class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::Bfs::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/bipartite_matching.h --- a/lemon/bipartite_matching.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/bipartite_matching.h Tue Jul 18 13:29:59 2006 +0000 @@ -593,7 +593,7 @@ /// of the parameters of the algorithms. class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::MaxWeightedBipartiteMatching::UninitializedParameter"; } }; @@ -1164,7 +1164,7 @@ /// of the parameters of the algorithms. class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::MinCostMaxBipartiteMatching::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/bits/utility.h --- a/lemon/bits/utility.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/bits/utility.h Tue Jul 18 13:29:59 2006 +0000 @@ -161,7 +161,7 @@ struct WrongStateError : public lemon::LogicError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::BiVariant::WrongStateError"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/dag_shortest_path.h --- a/lemon/dag_shortest_path.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/dag_shortest_path.h Tue Jul 18 13:29:59 2006 +0000 @@ -302,7 +302,7 @@ class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::DagShortestPath::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/dfs.h --- a/lemon/dfs.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/dfs.h Tue Jul 18 13:29:59 2006 +0000 @@ -143,7 +143,7 @@ */ class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::Dfs::UninitializedParameter"; } }; @@ -1223,7 +1223,7 @@ /// of the parameters of the algorithms. class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() return "lemon::DfsVisit::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/dijkstra.h --- a/lemon/dijkstra.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/dijkstra.h Tue Jul 18 13:29:59 2006 +0000 @@ -187,7 +187,7 @@ */ class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::Dijkstra::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/edge_set.h --- a/lemon/edge_set.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/edge_set.h Tue Jul 18 13:29:59 2006 +0000 @@ -586,7 +586,7 @@ class UnsupportedOperation : public LogicError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::SmartEdgeSet::UnsupportedOperation"; } }; @@ -683,7 +683,7 @@ class UnsupportedOperation : public LogicError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::SmartUEdgeSet::UnsupportedOperation"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/edmonds_karp.h --- a/lemon/edmonds_karp.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/edmonds_karp.h Tue Jul 18 13:29:59 2006 +0000 @@ -70,7 +70,7 @@ /// class InvalidArgument : public lemon::LogicError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::EdmondsKarp::InvalidArgument"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/error.h --- a/lemon/error.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/error.h Tue Jul 18 13:29:59 2006 +0000 @@ -176,15 +176,9 @@ Exception() {} ///\e virtual ~Exception() throw() {} - - ///\e - virtual const char* exceptionName() const { - return "lemon::Exception"; - } - ///\e virtual const char* what() const throw() { - return exceptionName(); + return "lemon::Exception"; } }; @@ -199,7 +193,7 @@ */ class LogicError : public Exception { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::LogicError"; } }; @@ -212,7 +206,7 @@ */ class UninitializedParameter : public LogicError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::UninitializedParameter"; } }; @@ -227,7 +221,7 @@ */ class RuntimeError : public Exception { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::RuntimeError"; } }; @@ -235,7 +229,7 @@ ///\e class RangeError : public RuntimeError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::RangeError"; } }; @@ -243,7 +237,7 @@ ///\e class IOError : public RuntimeError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::IOError"; } }; @@ -304,7 +298,7 @@ virtual const char* what() const throw() { try { std::ostringstream ostr; - ostr << exceptionName() << ": "; + ostr << "lemon:DataFormatError" << ": "; if (message()) ostr << message(); if( file() || line() != 0 ) { ostr << " ("; @@ -317,11 +311,7 @@ } catch (...) {} if( _message_holder.valid()) return _message_holder.get().c_str(); - return exceptionName(); - } - - virtual const char* exceptionName() const { - return "lemon::DataFormatError"; + return "lemon:DataFormatError"; } virtual ~DataFormatError() throw() {} @@ -361,19 +351,14 @@ virtual const char* what() const throw() { try { std::ostringstream ostr; - ostr << exceptionName() << ": "; + ostr << "lemon::FileOpenError" << ": "; ostr << "Cannot open file - " << file(); _message_holder.set(ostr.str()); } catch (...) {} if( _message_holder.valid()) return _message_holder.get().c_str(); - return exceptionName(); - } - - virtual const char* exceptionName() const { return "lemon::FileOpenError"; } - virtual ~FileOpenError() throw() {} }; @@ -431,13 +416,8 @@ } catch (...) {} if( _message_holder.valid() ) return _message_holder.get().c_str(); - return exceptionName(); + return "lemon:IOParameterError"; } - - virtual const char* exceptionName() const { - return "lemon::IOParameterError"; - } - virtual ~IOParameterError() throw() {} }; @@ -485,14 +465,9 @@ } catch(...) {} if( _message_holder.valid() ) return _message_holder.get().c_str(); - return exceptionName(); - } - - virtual const char* exceptionName() const { return "lemon::AssertionFailedError"; } - - virtual ~AssertionFailedError() throw() {} + virtual ~AssertionFailedError() throw() {} }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/floyd_warshall.h --- a/lemon/floyd_warshall.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/floyd_warshall.h Tue Jul 18 13:29:59 2006 +0000 @@ -199,7 +199,7 @@ class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::FloydWarshall::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/fredman_tarjan.h --- a/lemon/fredman_tarjan.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/fredman_tarjan.h Tue Jul 18 13:29:59 2006 +0000 @@ -132,7 +132,7 @@ ///of the parameters of the algorithms. class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::FredmanTarjan::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/full_graph.h --- a/lemon/full_graph.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/full_graph.h Tue Jul 18 13:29:59 2006 +0000 @@ -499,7 +499,7 @@ public: class NodeSetError : public LogicError { - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::FullBpUGraph::NodeSetError"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/grid_ugraph.h --- a/lemon/grid_ugraph.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/grid_ugraph.h Tue Jul 18 13:29:59 2006 +0000 @@ -117,7 +117,7 @@ class IndexError : public RuntimeError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::GridUGraph::IndexError"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/johnson.h --- a/lemon/johnson.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/johnson.h Tue Jul 18 13:29:59 2006 +0000 @@ -234,7 +234,7 @@ class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::Johnson::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/list_graph.h --- a/lemon/list_graph.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/list_graph.h Tue Jul 18 13:29:59 2006 +0000 @@ -508,7 +508,7 @@ class UnsupportedOperation : public LogicError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::ListGraph::Snapshot::UnsupportedOperation"; } }; @@ -841,7 +841,7 @@ public: class NodeSetError : public LogicError { - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::ListBpUGraph::NodeSetError"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/min_cost_arborescence.h --- a/lemon/min_cost_arborescence.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/min_cost_arborescence.h Tue Jul 18 13:29:59 2006 +0000 @@ -138,7 +138,7 @@ /// of the parameters of the algorithms. class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::MinCostArborescence::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/min_cut.h --- a/lemon/min_cut.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/min_cut.h Tue Jul 18 13:29:59 2006 +0000 @@ -207,7 +207,7 @@ /// of the parameters of the algorithms. class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::MaxCardinalitySearch::UninitializedParameter"; } }; @@ -858,7 +858,7 @@ /// of the parameters of the algorithms. class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::MinCut::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/preflow.h --- a/lemon/preflow.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/preflow.h Tue Jul 18 13:29:59 2006 +0000 @@ -102,7 +102,7 @@ ///\ref Exception for the case when the source equals the target. class InvalidArgument : public lemon::LogicError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::Preflow::InvalidArgument"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/prim.h --- a/lemon/prim.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/prim.h Tue Jul 18 13:29:59 2006 +0000 @@ -187,7 +187,7 @@ /// of the parameters of the algorithms. class UninitializedParameter : public lemon::UninitializedParameter { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::Prim::UninitializedParameter"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/radix_heap.h --- a/lemon/radix_heap.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/radix_heap.h Tue Jul 18 13:29:59 2006 +0000 @@ -37,7 +37,7 @@ class UnderFlowPriorityError : public RuntimeError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::UnderFlowPriorityError"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/refptr.h --- a/lemon/refptr.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/refptr.h Tue Jul 18 13:29:59 2006 +0000 @@ -45,8 +45,10 @@ void attach(RefPtr &r) { - prev=&r; next=r.next; ref=r.ref; - r.next=this; + if(r.ref) { + prev=&r; next=r.next; ref=r.ref; + r.next=this; + } } void attach(const T *p) { @@ -139,6 +141,30 @@ ///\e operator bool() const { return ref; } + ///\e + const RefPtr &borrow(const T* &p) { + lock(); + if(ref==p) { + if(prev) prev->next=next; + if(next) next->prev=prev; + } + else release(); + ref=p; + next=prev=this; + unlock(); + return *this; + } + + ///\e + const RefPtr &borrow() { + lock(); + if(prev) prev->next=next; + if(next) next->prev=prev; + next=prev=this; + unlock(); + return *this; + } + }; //END OF CLASS REFPTR } //END OF NAMESPACE LEMON diff -r cce8ac91c08c -r 38ec4a930c05 lemon/smart_graph.h --- a/lemon/smart_graph.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/smart_graph.h Tue Jul 18 13:29:59 2006 +0000 @@ -431,7 +431,7 @@ public: class NodeSetError : public LogicError { - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::SmartBpUGraph::NodeSetError"; } }; diff -r cce8ac91c08c -r 38ec4a930c05 lemon/tabu_search.h --- a/lemon/tabu_search.h Tue Jul 18 12:10:52 2006 +0000 +++ b/lemon/tabu_search.h Tue Jul 18 13:29:59 2006 +0000 @@ -341,7 +341,7 @@ /// is less than 2. class BadParameterError : public lemon::LogicError { public: - virtual const char* exceptionName() const { + virtual const char* what() const throw() { return "lemon::TabuSearch::BadParameterError"; } };