Remove boost::any requirement by providing our own implementation

This commit is contained in:
Jason Turner
2011-09-11 19:51:37 -06:00
parent a3c3b8683b
commit 194001f9a1
9 changed files with 230 additions and 70 deletions

View File

@@ -12,7 +12,7 @@
#include "../chaiscript_threading.hpp"
#include <map>
#include <boost/any.hpp>
#include "any.hpp"
namespace chaiscript
{
@@ -36,7 +36,7 @@ namespace chaiscript
struct Data
{
Data(const Type_Info &ti,
const boost::any &to,
const chaiscript::detail::Any &to,
bool tr,
const void *t_void_ptr)
: m_type_info(ti), m_obj(to), m_data_ptr(ti.is_const()?0:const_cast<void *>(t_void_ptr)), m_const_data_ptr(t_void_ptr),
@@ -60,7 +60,7 @@ namespace chaiscript
}
Type_Info m_type_info;
boost::any m_obj;
chaiscript::detail::Any m_obj;
void *m_data_ptr;
const void *m_const_data_ptr;
bool m_is_ref;
@@ -73,7 +73,7 @@ namespace chaiscript
{
return std::shared_ptr<Data> (new Data(
detail::Get_Type_Info<void>::get(),
boost::any(),
chaiscript::detail::Any(),
false,
0)
);
@@ -90,7 +90,7 @@ namespace chaiscript
{
return std::shared_ptr<Data>(new Data(
detail::Get_Type_Info<T>::get(),
boost::any(obj),
chaiscript::detail::Any(obj),
false,
obj.get())
);
@@ -107,7 +107,7 @@ namespace chaiscript
{
return std::shared_ptr<Data>(new Data(
detail::Get_Type_Info<T>::get(),
boost::any(obj),
chaiscript::detail::Any(obj),
true,
&obj.get())
);
@@ -119,7 +119,7 @@ namespace chaiscript
std::shared_ptr<T> p(new T(t));
return std::shared_ptr<Data>(new Data(
detail::Get_Type_Info<T>::get(),
boost::any(p),
chaiscript::detail::Any(p),
false,
p.get())
);
@@ -129,7 +129,7 @@ namespace chaiscript
{
return std::shared_ptr<Data> (new Data(
Type_Info(),
boost::any(),
chaiscript::detail::Any(),
false,
0)
);
@@ -220,7 +220,7 @@ namespace chaiscript
return (m_data->m_data_ptr == 0 && m_data->m_const_data_ptr == 0);
}
const boost::any & get() const
const chaiscript::detail::Any & get() const
{
return m_data->m_obj;
}