Get chaiscript compiling with -pedantic. Closes issue #9
This commit is contained in:
@@ -61,7 +61,7 @@ IF(MSVC)
|
|||||||
ADD_DEFINITIONS(/bigobj)
|
ADD_DEFINITIONS(/bigobj)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ELSE()
|
ELSE()
|
||||||
ADD_DEFINITIONS(-Wall -Wextra -Wshadow)
|
ADD_DEFINITIONS(-Wall -Wextra -Wshadow -pedantic)
|
||||||
|
|
||||||
IF (APPLE)
|
IF (APPLE)
|
||||||
# -Wno-missing-field-initializers is for boost on macos
|
# -Wno-missing-field-initializers is for boost on macos
|
||||||
|
@@ -76,7 +76,7 @@ namespace chaiscript
|
|||||||
struct DLSym
|
struct DLSym
|
||||||
{
|
{
|
||||||
DLSym(DLModule &t_mod, const std::string &t_symbol)
|
DLSym(DLModule &t_mod, const std::string &t_symbol)
|
||||||
: m_symbol(reinterpret_cast<T>(dlsym(t_mod.m_data, t_symbol.c_str())))
|
: m_symbol(cast_symbol(dlsym(t_mod.m_data, t_symbol.c_str())))
|
||||||
{
|
{
|
||||||
if (!m_symbol)
|
if (!m_symbol)
|
||||||
{
|
{
|
||||||
@@ -84,6 +84,19 @@ namespace chaiscript
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static T cast_symbol(void *p)
|
||||||
|
{
|
||||||
|
union cast_union
|
||||||
|
{
|
||||||
|
T func_ptr;
|
||||||
|
void *in_ptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
cast_union c;
|
||||||
|
c.in_ptr = p;
|
||||||
|
return c.func_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
T m_symbol;
|
T m_symbol;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -49,10 +49,20 @@
|
|||||||
CHAISCRIPT_CLASS_METHODS((_module)(_class_name)(_class_name_translator)(_method_name_translator), _methods) \
|
CHAISCRIPT_CLASS_METHODS((_module)(_class_name)(_class_name_translator)(_method_name_translator), _methods) \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CHAISCRIPT_CLASS_NO_CONSTRUCTOR_EX(_module, _class_name, _class_name_translator, _method_name_translator, _methods) \
|
||||||
|
{ \
|
||||||
|
_module->add(chaiscript::user_type<_class_name>(), _class_name_translator (BOOST_PP_STRINGIZE(_class_name))); \
|
||||||
|
CHAISCRIPT_CLASS_METHODS((_module)(_class_name)(_class_name_translator)(_method_name_translator), _methods) \
|
||||||
|
}
|
||||||
|
|
||||||
#define CHAISCRIPT_CLASS(_module, _class_name, _constructors, _methods) \
|
#define CHAISCRIPT_CLASS(_module, _class_name, _constructors, _methods) \
|
||||||
CHAISCRIPT_CLASS_EX(_module, _class_name, chaiscript::utility::class_name_translator, \
|
CHAISCRIPT_CLASS_EX(_module, _class_name, chaiscript::utility::class_name_translator, \
|
||||||
chaiscript::utility::method_name_translator, _constructors, _methods)
|
chaiscript::utility::method_name_translator, _constructors, _methods)
|
||||||
|
|
||||||
|
#define CHAISCRIPT_CLASS_NO_CONSTRUCTOR(_module, _class_name, _methods) \
|
||||||
|
CHAISCRIPT_CLASS_NO_CONSTRUCTOR_EX(_module, _class_name, chaiscript::utility::class_name_translator, \
|
||||||
|
chaiscript::utility::method_name_translator, _methods)
|
||||||
|
|
||||||
namespace chaiscript
|
namespace chaiscript
|
||||||
{
|
{
|
||||||
/// \brief Classes and functions which provide general utility to the end user.
|
/// \brief Classes and functions which provide general utility to the end user.
|
||||||
|
@@ -52,9 +52,8 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_reflect
|
|||||||
|
|
||||||
chaiscript::bootstrap::standard_library::vector_type<std::vector<boost::shared_ptr<chaiscript::AST_Node> > >("AST_NodeVector", m);
|
chaiscript::bootstrap::standard_library::vector_type<std::vector<boost::shared_ptr<chaiscript::AST_Node> > >("AST_NodeVector", m);
|
||||||
|
|
||||||
CHAISCRIPT_CLASS( m,
|
CHAISCRIPT_CLASS_NO_CONSTRUCTOR( m,
|
||||||
chaiscript::exception::eval_error,
|
chaiscript::exception::eval_error,
|
||||||
,
|
|
||||||
((reason))
|
((reason))
|
||||||
((call_stack))
|
((call_stack))
|
||||||
);
|
);
|
||||||
@@ -67,9 +66,8 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_reflect
|
|||||||
((column))
|
((column))
|
||||||
);
|
);
|
||||||
|
|
||||||
CHAISCRIPT_CLASS( m,
|
CHAISCRIPT_CLASS_NO_CONSTRUCTOR( m,
|
||||||
chaiscript::AST_Node,
|
chaiscript::AST_Node,
|
||||||
,
|
|
||||||
((text))
|
((text))
|
||||||
((identifier))
|
((identifier))
|
||||||
((filename))
|
((filename))
|
||||||
|
Reference in New Issue
Block a user