fix review comments

This commit is contained in:
mihacooper 2017-01-24 19:27:33 +03:00
parent 7daf9d0df4
commit 91a87084ff
3 changed files with 21 additions and 15 deletions

View File

@ -68,8 +68,8 @@ public:
ASSERT(loader.valid());
sol::function result = loader(function_);
ASSERT(result.valid()) << "Unable to restore function!" << std::endl
<< "Content:" << std::endl << function_ << std::endl;
ASSERT(result.valid()) << "Unable to restore function!\n"
<< "Content:\n" << function_;
return sol::make_object(state, result);
}
@ -141,7 +141,7 @@ std::unique_ptr<BaseHolder> fromSolObject(const SolObject& luaObject) {
return std::make_unique<PrimitiveHolder<SharedTable*>>(sol::type::userdata, table);
}
default:
ERROR << "Unable to store object of that type: " << (int)luaObject.get_type() << std::endl;
ERROR << "Unable to store object of that type: " << (int)luaObject.get_type() << "\n";
}
return nullptr;
}

View File

@ -49,7 +49,7 @@ void LuaThread::detach() noexcept {
}
void LuaThread::work() noexcept {
ASSERT(p_state_.get() && p_arguments_.get()) << "invalid thread Lua state" << std::endl;
ASSERT(p_state_.get() && p_arguments_.get()) << "invalid thread Lua state\n";
std::string func_owner = std::move(str_function_);
std::shared_ptr<sol::state> state_owner = p_state_;

View File

@ -5,25 +5,31 @@
#include <sol.hpp>
namespace effil {
namespace utils {
class ExceptionThrower
{
class Exception : public sol::error {
public:
void operator =(const std::ostream& os)
{
throw sol::error(static_cast<const std::stringstream&>(os).str());
Exception() noexcept : sol::error("") {}
template<typename T>
Exception& operator<<(const T& value) {
std::stringstream ss;
ss << value;
message_ += ss.str();
return *this;
}
operator bool()
{
return true;
virtual const char* what() const noexcept override {
return message_.c_str();
}
private:
std::string message_;
};
}
} // utils
} // effil
#define ERROR if (auto thr = utils::ExceptionThrower()) thr = std::stringstream() << __FILE__ << ":" << __LINE__ << std::endl
#define ERROR throw effil::utils::Exception() << __FILE__ << ":" << __LINE__
#define ASSERT(cond) if (!(cond)) ERROR << "In condition '" << #cond << "': "