forked from enlightenment/efl
eina-cxx: Added EFL_CXX_NO_EXCEPTIONS flag.
This flag allows one to compile Eina++ replacing C++ exceptions with a call to abort(). Please use EFL_CXX_THROW() macro instead of C++ throw() from now on.
This commit is contained in:
parent
becdaf89c8
commit
b2d8a216f1
|
@ -1,6 +1,12 @@
|
|||
#ifndef EINA_HH_
|
||||
#define EINA_HH_
|
||||
|
||||
#if defined ( EFL_CXX_NO_EXCEPTIONS )
|
||||
# define EFL_CXX_THROW(x) std::abort()
|
||||
#else
|
||||
# define EFL_CXX_THROW(x) throw (x)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief Eina C++
|
||||
|
|
|
@ -90,7 +90,7 @@ struct accessor
|
|||
eina_accessor_free(_impl);
|
||||
_impl = eina_accessor_clone(other._impl);
|
||||
if(!_impl)
|
||||
throw eina::system_error(efl::eina::get_error_code(), "Error cloning accessor");
|
||||
EFL_CXX_THROW(eina::system_error(efl::eina::get_error_code(), "Error cloning accessor"));
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,7 @@ struct accessor
|
|||
if(!eina_accessor_data_get(_impl, i, &p))
|
||||
{
|
||||
eina::error_code ec = efl::eina::get_error_code();
|
||||
throw eina::system_error(ec, "EFL Eina Error");
|
||||
EFL_CXX_THROW(eina::system_error(ec, "EFL Eina Error"));
|
||||
}
|
||||
return *static_cast<mapped_type*>(p);
|
||||
}
|
||||
|
|
|
@ -238,9 +238,9 @@ inline void throw_on_error()
|
|||
{
|
||||
eina::error_code ec = get_error_code();
|
||||
if(ec)
|
||||
{
|
||||
throw eina::system_error(ec, "EFL Eina Error");
|
||||
}
|
||||
{
|
||||
EFL_CXX_THROW(eina::system_error(ec, "EFL Eina Error"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -616,12 +616,12 @@ public:
|
|||
{
|
||||
Eina_List* new_list = eina_list_append(this->_impl._list, p.get());
|
||||
if(new_list)
|
||||
{
|
||||
this->_impl._list = new_list;
|
||||
p.release();
|
||||
}
|
||||
{
|
||||
this->_impl._list = new_list;
|
||||
p.release();
|
||||
}
|
||||
else
|
||||
throw std::bad_alloc();
|
||||
EFL_CXX_THROW(std::bad_alloc());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -669,12 +669,12 @@ public:
|
|||
{
|
||||
Eina_List* new_list = eina_list_prepend(this->_impl._list, p.get());
|
||||
if(new_list)
|
||||
{
|
||||
this->_impl._list = new_list;
|
||||
p.release();
|
||||
}
|
||||
{
|
||||
this->_impl._list = new_list;
|
||||
p.release();
|
||||
}
|
||||
else
|
||||
throw std::bad_alloc();
|
||||
EFL_CXX_THROW(std::bad_alloc());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -759,7 +759,7 @@ public:
|
|||
if(this->_impl._list)
|
||||
p.release();
|
||||
else
|
||||
throw std::bad_alloc();
|
||||
EFL_CXX_THROW(std::bad_alloc());
|
||||
return iterator(this->_impl._list
|
||||
, i.native_handle()
|
||||
? ::eina_list_prev(i.native_handle())
|
||||
|
|
|
@ -384,7 +384,7 @@ struct stringshare
|
|||
if(i < size())
|
||||
return (*this)[i];
|
||||
else
|
||||
throw std::out_of_range("");
|
||||
EFL_CXX_THROW(std::out_of_range(""));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -88,10 +88,10 @@ struct mutex
|
|||
case EINA_LOCK_SUCCEED:
|
||||
return;
|
||||
case EINA_LOCK_DEADLOCK:
|
||||
throw system_error(error_code(int(eina::errc::resource_deadlock_would_occur)
|
||||
, get_generic_category()));
|
||||
EFL_CXX_THROW(system_error(error_code(int(eina::errc::resource_deadlock_would_occur),
|
||||
get_generic_category())));
|
||||
default:
|
||||
throw system_error(get_error_code());
|
||||
EFL_CXX_THROW(system_error(get_error_code()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -118,10 +118,10 @@ struct mutex
|
|||
case EINA_LOCK_FAIL:
|
||||
return false;
|
||||
case EINA_LOCK_DEADLOCK:
|
||||
throw system_error(error_code(int(eina::errc::resource_deadlock_would_occur)
|
||||
, get_generic_category()));
|
||||
EFL_CXX_THROW(system_error(error_code(int(eina::errc::resource_deadlock_would_occur),
|
||||
get_generic_category())));
|
||||
default:
|
||||
throw system_error(get_error_code());
|
||||
EFL_CXX_THROW(system_error(get_error_code()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -147,10 +147,10 @@ struct mutex
|
|||
case EINA_LOCK_SUCCEED:
|
||||
return;
|
||||
case EINA_LOCK_DEADLOCK:
|
||||
throw system_error(error_code(int(eina::errc::resource_deadlock_would_occur)
|
||||
, get_generic_category()));
|
||||
EFL_CXX_THROW(system_error(error_code(int(eina::errc::resource_deadlock_would_occur),
|
||||
get_generic_category())));
|
||||
default:
|
||||
throw system_error(get_error_code());
|
||||
EFL_CXX_THROW(system_error(get_error_code()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -266,7 +266,9 @@ struct condition_variable
|
|||
eina::unique_lock<eina::mutex> l(_mutex);
|
||||
Eina_Bool r = eina_condition_signal(&_cond);
|
||||
if(!r)
|
||||
throw eina::system_error(eina::get_error_code());
|
||||
{
|
||||
EFL_CXX_THROW(eina::system_error(eina::get_error_code()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -282,7 +284,9 @@ struct condition_variable
|
|||
eina::unique_lock<eina::mutex> l(_mutex);
|
||||
Eina_Bool r = eina_condition_broadcast(&_cond);
|
||||
if(!r)
|
||||
throw eina::system_error(eina::get_error_code());
|
||||
{
|
||||
EFL_CXX_THROW(eina::system_error(eina::get_error_code()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -64,10 +64,11 @@ struct _eina_value_traits_base
|
|||
if(::eina_value_get(v, &vv))
|
||||
return vv;
|
||||
else
|
||||
throw eina::system_error(eina::get_error_code());
|
||||
EFL_CXX_THROW(eina::system_error(eina::get_error_code()));
|
||||
}
|
||||
else
|
||||
throw eina::system_error(EINA_ERROR_VALUE_FAILED, eina::eina_error_category());
|
||||
EFL_CXX_THROW(eina::system_error(EINA_ERROR_VALUE_FAILED,
|
||||
eina::eina_error_category()));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -445,7 +446,9 @@ public:
|
|||
: _raw(_eina_value_traits<char>::create())
|
||||
{
|
||||
if(!eina_value_copy(const_cast<Eina_Value const*>(other._raw), _raw))
|
||||
throw eina::system_error(eina::get_error_code());
|
||||
{
|
||||
EFL_CXX_THROW(eina::system_error(eina::get_error_code()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -456,7 +459,9 @@ public:
|
|||
{
|
||||
eina_value_flush(_raw);
|
||||
if(!eina_value_copy(const_cast<Eina_Value const*>(other._raw), _raw))
|
||||
throw eina::system_error(eina::get_error_code());
|
||||
{
|
||||
EFL_CXX_THROW(eina::system_error(eina::get_error_code()));
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue