Get chaiscript compiling with -pedantic. Closes issue #9

This commit is contained in:
Jason Turner
2011-09-09 13:40:50 -06:00
parent a85423869f
commit a386142fa6
4 changed files with 27 additions and 6 deletions

View File

@@ -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

View File

@@ -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;
}; };

View File

@@ -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.

View File

@@ -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))