/* This file is part of SLL. Copyright (C) 2008 Sebastien LUTTRINGER SLL is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. SLL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with SLL; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "error.hh" /*! ** Constructor ** ** @param i error code ** @param s error message */ Error::Error(int i, const string s) { val_ = i; msg_ << s; } /*! ** Constructor by copy ** ** @param e */ Error::Error(const Error &e) { val_ = e.val_; msg_ << e.msg_.str(); } /*! ** Print and error msg on std err ** */ void Error::print() const { if (msg_.str() != "") std::cerr << msg_.str() << "." << std::endl; } /*! ** @return a copy of message description */ string Error::message() const { return msg_.str(); } /*! ** @return the error code */ int Error::code() const { return val_; } /*! ** Set error code to @param v */ void Error::code(int v) { val_ = v; } /*! ** Concatenate @param s before error message */ void Error::prefix(const string &s) { string buf = s + msg_.str(); msg_.str(""); msg_ << buf; } /*! ** Concatenate @param s to errror message */ void Error::suffix(const string &s) { msg_ << s; } /*! ** Copy operator */ Error &Error::operator=(const Error &rhs) { val_ = rhs.val_; msg_.str(""); msg_ << rhs.msg_.str(); return *this; } /*! ** Print error message to @param o stream */ ostream &operator<<(ostream &o, const Error &e) { o << e.msg_.str(); return o; } /*! ** Concatenate @param val to errror message */ Error &operator<<(Error &e, int val) { e.msg_ << val; return e; } /*! ** Concatenate @param s to errror message */ Error &operator<<(Error &e, const string &s) { e.msg_ << s; return e; } /*! ** Concatenate @param s before error message */ Error &operator>>(Error &e, const string &s) { string buf = s + e.msg_.str(); e.msg_.str(""); e.msg_ << buf; return e; }