Fix g++4.6 build issues
This commit is contained in:
@@ -319,7 +319,7 @@ namespace chaiscript
|
|||||||
|
|
||||||
template <typename V, typename... Vcount> struct backingList { static std::initializer_list<V> list; };
|
template <typename V, typename... Vcount> struct backingList { static std::initializer_list<V> list; };
|
||||||
template <typename V, typename... Vcount>
|
template <typename V, typename... Vcount>
|
||||||
std::initializer_list<V> backingList<V, Vcount...>::list = { (Vcount)backingValue<V>::value... };
|
std::initializer_list<V> backingList<V, Vcount...>::list = { static_cast<Vcount>(backingValue<V>::value)... };
|
||||||
|
|
||||||
template <size_t maxLength, typename It, typename V = typename It::value_type, typename... Vcount>
|
template <size_t maxLength, typename It, typename V = typename It::value_type, typename... Vcount>
|
||||||
static typename std::enable_if< sizeof...(Vcount) >= maxLength,
|
static typename std::enable_if< sizeof...(Vcount) >= maxLength,
|
||||||
|
@@ -69,21 +69,31 @@ namespace chaiscript
|
|||||||
typename std::enable_if<std::is_enum<Enum>::value, void>::type
|
typename std::enable_if<std::is_enum<Enum>::value, void>::type
|
||||||
add_class(ModuleType &t_module,
|
add_class(ModuleType &t_module,
|
||||||
const std::string &t_class_name,
|
const std::string &t_class_name,
|
||||||
const std::vector<std::pair<typename std::underlying_type<Enum>::type, std::string>> &t_constants)
|
#ifdef CHAISCRIPT_GCC_4_6
|
||||||
|
const std::vector<std::pair<int, std::string>> &t_constants
|
||||||
|
#else
|
||||||
|
const std::vector<std::pair<typename std::underlying_type<Enum>::type, std::string>> &t_constants
|
||||||
|
#endif
|
||||||
|
)
|
||||||
{
|
{
|
||||||
t_module.add(chaiscript::user_type<Enum>(), t_class_name);
|
t_module.add(chaiscript::user_type<Enum>(), t_class_name);
|
||||||
|
|
||||||
t_module.add(chaiscript::constructor<Enum ()>(), t_class_name);
|
t_module.add(chaiscript::constructor<Enum ()>(), t_class_name);
|
||||||
t_module.add(chaiscript::constructor<Enum (const Enum &)>(), t_class_name);
|
t_module.add(chaiscript::constructor<Enum (const Enum &)>(), t_class_name);
|
||||||
|
|
||||||
|
using namespace chaiscript::bootstrap::operators;
|
||||||
t_module.add([](){
|
t_module.add([](){
|
||||||
// add some comparison and assignment operators
|
// add some comparison and assignment operators
|
||||||
using namespace chaiscript::bootstrap::operators;
|
|
||||||
return assign<Enum>(not_equal<Enum>(equal<Enum>()));
|
return assign<Enum>(not_equal<Enum>(equal<Enum>()));
|
||||||
}());
|
}());
|
||||||
|
|
||||||
|
#ifdef CHAISCRIPT_GCC_4_6
|
||||||
|
t_module.add(chaiscript::fun([](const Enum &e, const int &i) { return e == i; }), "==");
|
||||||
|
t_module.add(chaiscript::fun([](const int &i, const Enum &e) { return i == e; }), "==");
|
||||||
|
#else
|
||||||
t_module.add(chaiscript::fun([](const Enum &e, const typename std::underlying_type<Enum>::type &i) { return e == i; }), "==");
|
t_module.add(chaiscript::fun([](const Enum &e, const typename std::underlying_type<Enum>::type &i) { return e == i; }), "==");
|
||||||
t_module.add(chaiscript::fun([](const typename std::underlying_type<Enum>::type &i, const Enum &e) { return i == e; }), "==");
|
t_module.add(chaiscript::fun([](const typename std::underlying_type<Enum>::type &i, const Enum &e) { return i == e; }), "==");
|
||||||
|
#endif
|
||||||
|
|
||||||
for (const auto &constant : t_constants)
|
for (const auto &constant : t_constants)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user