Skip to content

Commit

Permalink
xrScriptEngine: add linux build
Browse files Browse the repository at this point in the history
  • Loading branch information
eagleivg committed May 30, 2018
1 parent 0d7cdb6 commit 45aeea4
Show file tree
Hide file tree
Showing 15 changed files with 117 additions and 84 deletions.
2 changes: 1 addition & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ add_subdirectory(xrCore)
#add_subdirectory(xrNetServer)
#add_subdirectory(xrParticles)
#add_subdirectory(xrPhysics)
#add_subdirectory(xrScriptEngine)
add_subdirectory(xrScriptEngine)
#add_subdirectory(xrSound)
42 changes: 21 additions & 21 deletions src/Common/object_cloner.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ struct CCloner
struct CHelper
{
template <bool a>
IC static void clone(const T& _1, T& _2)
IC static void clone(std::enable_if_t<!a, const T&> _1, T& _2)
{
_2 = _1;
}

template <>
IC static void clone<true>(const T& _1, T& _2)
template <bool a>
IC static void clone(std::enable_if_t<a, const T&> _1, T& _2)
{
_2 = new object_type_traits::remove_pointer<T>::type(*_1);
_2 = new typename object_type_traits::remove_pointer<T>::type(*_1);
CCloner::clone(*_1, *_2);
}
};
Expand All @@ -34,18 +34,18 @@ struct CCloner
template <typename T1, typename T2>
IC static void clone(const std::pair<T1, T2>& _1, std::pair<T1, T2>& _2)
{
clone(const_cast<object_type_traits::remove_const<T1>::type&>(_1.first),
const_cast<object_type_traits::remove_const<T1>::type&>(_2.first));
clone(const_cast<typename object_type_traits::remove_const<T1>::type&>(_1.first),
const_cast<typename object_type_traits::remove_const<T1>::type&>(_2.first));
clone(_1.second, _2.second);
}

template <typename T, int size>
IC static void clone(const svector<T, size>& _1, svector<T, size>& _2)
{
_2.resize(_1.size());
svector<T, size>::iterator J = _2.begin();
svector<T, size>::const_iterator I = _1.begin();
svector<T, size>::const_iterator E = _1.end();
typename svector<T, size>::iterator J = _2.begin();
typename svector<T, size>::const_iterator I = _1.begin();
typename svector<T, size>::const_iterator E = _1.end();
for (; I != E; ++I, ++J)
clone(*I, *J);
}
Expand All @@ -64,7 +64,7 @@ struct CCloner

for (; !_2.empty(); _2.pop())
{
std::queue<T1, T2>::value_type t;
typename std::queue<T1, T2>::value_type t;
CCloner::clone(_2.front(), t);
__2.push(t);
}
Expand All @@ -84,7 +84,7 @@ struct CCloner

for (; !_2.empty(); _2.pop())
{
T1<T2, T3>::value_type t;
typename T1<T2, T3>::value_type t;
CCloner::clone(_2.top(), t);
__2.push(t);
}
Expand All @@ -104,7 +104,7 @@ struct CCloner

for (; !_2.empty(); _2.pop())
{
T1<T2, T3, T4>::value_type t;
typename T1<T2, T3, T4>::value_type t;
CCloner::clone(_2.top(), t);
__2.push(t);
}
Expand All @@ -131,7 +131,7 @@ struct CCloner
}

template <typename T1, typename T2>
IC static void add(T1& data, typename T2& value)
IC static void add(T1& data, T2& value)
{
data.insert(value);
}
Expand All @@ -140,11 +140,11 @@ struct CCloner
IC static void clone(const T& _1, T& _2)
{
_2.clear();
T::const_iterator I = _1.begin();
T::const_iterator E = _1.end();
typename T::const_iterator I = _1.begin();
typename T::const_iterator E = _1.end();
for (; I != E; ++I)
{
T::value_type t;
typename T::value_type t;
CCloner::clone(*I, t);
add(_2, t);
}
Expand All @@ -155,13 +155,13 @@ struct CCloner
struct CHelper4
{
template <bool a>
IC static void clone(const T& _1, T& _2)
IC static void clone(std::enable_if_t<!a, const T&> _1, T& _2)
{
CHelper<T>::clone<object_type_traits::is_pointer<T>::value>(_1, _2);
CHelper<T>::template clone<object_type_traits::is_pointer<T>::value>(_1, _2);
}

template <>
IC static void clone<true>(const T& _1, T& _2)
template <bool a>
IC static void clone(std::enable_if_t<a, const T&> _1, T& _2)
{
CHelper3::clone(_1, _2);
}
Expand All @@ -170,7 +170,7 @@ struct CCloner
template <typename T>
IC static void clone(const T& _1, T& _2)
{
CHelper4<T>::clone<object_type_traits::is_stl_container<T>::value>(_1, _2);
CHelper4<T>::template clone<object_type_traits::is_stl_container<T>::value>(_1, _2);
}
};

Expand Down
20 changes: 10 additions & 10 deletions src/Common/object_comparer.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ struct CComparer
struct CHelper
{
template <bool a>
IC static bool compare(const T& a1, const T& a2, const P& p)
IC static bool compare(std::enable_if_t<!a, const T&> a1, const T& a2, const P& p)
{
return p(a1, a2);
}

template <>
IC static bool compare<true>(const T& a1, const T& a2, const P& p)
template <bool a>
IC static bool compare(std::enable_if_t<a, const T&> a1, const T& a2, const P& p)
{
return CComparer::compare(*a1, *a2, p);
}
Expand Down Expand Up @@ -119,8 +119,8 @@ struct CComparer
if (a1.size() != a2.size())
return p();

T::const_iterator I = a1.begin(), J = a2.begin();
T::const_iterator E = a1.end();
typename T::const_iterator I = a1.begin(), J = a2.begin();
typename T::const_iterator E = a1.end();
for (; I != E; ++I, ++J)
if (!CComparer::compare(*I, *J, p))
return false;
Expand All @@ -132,13 +132,13 @@ struct CComparer
struct CHelper4
{
template <bool a>
IC static bool compare(const T& a1, const T& a2, const P& p)
IC static bool compare(std::enable_if_t<!a, const T&> a1, const T& a2, const P& p)
{
return CHelper<T>::compare<object_type_traits::is_pointer<T>::value>(a1, a2, p);
return CHelper<T>::template compare<object_type_traits::is_pointer<T>::value>(a1, a2, p);
}

template <>
IC static bool compare<true>(const T& a1, const T& a2, const P& p)
template <bool a>
IC static bool compare(std::enable_if_t<a, const T&> a1, const T& a2, const P& p)
{
return CHelper3::compare(a1, a2, p);
}
Expand All @@ -147,7 +147,7 @@ struct CComparer
template <typename T>
IC static bool compare(const T& a1, const T& a2, const P& p)
{
return CHelper4<T>::compare<object_type_traits::is_stl_container<T>::value>(a1, a2, p);
return CHelper4<T>::template compare<object_type_traits::is_stl_container<T>::value>(a1, a2, p);
}
};

Expand Down
24 changes: 12 additions & 12 deletions src/Common/object_destroyer.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,12 @@ struct CDestroyer
struct CHelper1
{
template <bool a>
static void delete_data(T&)
static void delete_data(std::enable_if_t<!a, T&>)
{
}

template <>
static void delete_data<true>(T& data)
template <bool a>
static void delete_data(std::enable_if_t<a, T&> data)
{
data.destroy();
}
Expand All @@ -87,13 +87,13 @@ struct CDestroyer
struct CHelper2
{
template <bool a>
static void delete_data(T& data)
static void delete_data(std::enable_if_t<!a, T&> data)
{
CHelper1<T>::delete_data<object_type_traits::is_base_and_derived<IPureDestroyableObject, T>::value>(data);
CHelper1<T>::template delete_data<object_type_traits::is_base_and_derived<IPureDestroyableObject, T>::value>(data);
}

template <>
static void delete_data<true>(T& data)
template <bool a>
static void delete_data(std::enable_if_t<a, T&> data)
{
if (data)
CDestroyer::delete_data(*data);
Expand All @@ -116,13 +116,13 @@ struct CDestroyer
struct CHelper4
{
template <bool a>
static void delete_data(T& data)
static void delete_data(std::enable_if_t<!a, T&> data)
{
CHelper2<T>::delete_data<object_type_traits::is_pointer<T>::value>(data);
CHelper2<T>::template delete_data<object_type_traits::is_pointer<T>::value>(data);
}

template <>
static void delete_data<true>(T& data)
template <bool a>
static void delete_data(std::enable_if_t<a, T&> data)
{
CHelper3::delete_data(data);
}
Expand All @@ -131,7 +131,7 @@ struct CDestroyer
template <typename T>
static void delete_data(T& data)
{
CHelper4<T>::delete_data<object_type_traits::is_stl_container<T>::value>(data);
CHelper4<T>::template delete_data<object_type_traits::is_stl_container<T>::value>(data);
}
};

Expand Down
26 changes: 13 additions & 13 deletions src/Common/object_loader.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ struct CLoader
struct CHelper1
{
template <bool a>
static void load_data(T& data, M& stream, const P& /*p*/)
static void load_data(std::enable_if_t<a, T&> data, M& stream, const P& /*p*/)
{
static_assert(!std::is_polymorphic<T>::value, "Cannot load polymorphic classes as binary data.");
stream.r(&data, sizeof(T));
}

template <>
static void load_data<true>(T& data, M& stream, const P& /*p*/)
template <bool a>
static void load_data(std::enable_if_t<!a, T&> data, M& stream, const P& /*p*/)
{
T* data1 = const_cast<T*>(&data);
data1->load(stream);
Expand All @@ -36,13 +36,13 @@ struct CLoader
struct CHelper
{
template <bool pointer>
static void load_data(T& data, M& stream, const P& p)
static void load_data(std::enable_if_t<pointer, T&> data, M& stream, const P& p)
{
CHelper1<T>::load_data<object_type_traits::is_base_and_derived<ISerializable, T>::value>(data, stream, p);
}

template <>
static void load_data<true>(T& data, M& stream, const P& p)
template <bool pointer>
static void load_data(std::enable_if_t<!pointer, T&> data, M& stream, const P& p)
{
CLoader<M, P>::load_data(*(data = new typename object_type_traits::remove_pointer<T>::type()), stream, p);
}
Expand Down Expand Up @@ -76,14 +76,14 @@ struct CLoader
template <typename T1, typename T2>
struct add_helper
{
template <bool>
static void add(T1& data, T2& value)
template <bool a>
static void add(std::enable_if_t<a, T1&> data, T2& value)
{
data.push_back(value);
}

template <>
static void add<true>(T1& data, T2& value)
template <bool a>
static void add(std::enable_if_t<!a, T1&> data, T2& value)
{
data.insert(value);
}
Expand Down Expand Up @@ -115,13 +115,13 @@ struct CLoader
struct CHelper4
{
template <bool a>
static void load_data(T& data, M& stream, const P& p)
static void load_data(std::enable_if_t<a, T&> data, M& stream, const P& p)
{
CHelper<T>::load_data<object_type_traits::is_pointer<T>::value>(data, stream, p);
}

template <>
static void load_data<true>(T& data, M& stream, const P& p)
template <bool a>
static void load_data(std::enable_if_t<!a, T&> data, M& stream, const P& p)
{
CHelper3::load_data(data, stream, p);
}
Expand Down
26 changes: 13 additions & 13 deletions src/Common/object_saver.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ struct CSaver
struct CHelper1
{
template <bool a>
IC static void save_data(const T& data, M& stream, const P& /*p*/)
IC static void save_data(std::enable_if_t<!a>, const T& data, M& stream, const P& /*p*/)
{
static_assert(!std::is_polymorphic<T>::value, "Cannot save polymorphic classes as binary data.");
stream.w(&data, sizeof(T));
}

template <>
IC static void save_data<true>(const T& data, M& stream, const P& /*p*/)
template <bool a>
IC static void save_data(std::enable_if_t<a>, const T& data, M& stream, const P& /*p*/)
{
T* data1 = const_cast<T*>(&data);
data1->save(stream);
Expand All @@ -36,13 +36,13 @@ struct CSaver
struct CHelper
{
template <bool pointer>
IC static void save_data(const T& data, M& stream, const P& p)
IC static void save_data(std::enable_if_t<!pointer>, const T& data, M& stream, const P& p)
{
CHelper1<T>::save_data<object_type_traits::is_base_and_derived<ISerializable, T>::value>(data, stream, p);
CHelper1<T>::template save_data<object_type_traits::is_base_and_derived<ISerializable, T>::value>(data, stream, p);
}

template <>
IC static void save_data<true>(const T& data, M& stream, const P& p)
template <bool pointer>
IC static void save_data(std::enable_if_t<pointer>, const T& data, M& stream, const P& p)
{
CSaver<M, P>::save_data(*data, stream, p);
}
Expand All @@ -54,8 +54,8 @@ struct CSaver
IC static void save_data(const T& data, M& stream, const P& p)
{
stream.w_u32((u32)data.size());
T::const_iterator I = data.begin();
T::const_iterator E = data.end();
typename T::const_iterator I = data.begin();
typename T::const_iterator E = data.end();
for (; I != E; ++I)
if (p(data, *I))
CSaver<M, P>::save_data(*I, stream, p);
Expand All @@ -66,13 +66,13 @@ struct CSaver
struct CHelper4
{
template <bool a>
IC static void save_data(const T& data, M& stream, const P& p)
IC static void save_data(std::enable_if_t<!a, const T&> data, M& stream, const P& p)
{
CHelper<T>::save_data<object_type_traits::is_pointer<T>::value>(data, stream, p);
CHelper<T>::template save_data<object_type_traits::is_pointer<T>::value>(data, stream, p);
}

template <>
IC static void save_data<true>(const T& data, M& stream, const P& p)
template <bool a>
IC static void save_data(std::enable_if_t<a, const T&> data, M& stream, const P& p)
{
CHelper3::save_data(data, stream, p);
}
Expand Down
15 changes: 15 additions & 0 deletions src/xrScriptEngine/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
project(xrScriptEngine)

list(APPEND DIRS
"."
"LuaStudio"
)

add_dir("${DIRS}")

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/../../Externals/luabind ${CMAKE_CURRENT_SOURCE_DIR}/../../sdk/include )

add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}__SOURCES} ${${PROJECT_NAME}__INCLUDES})

set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
target_link_libraries(${PROJECT_NAME} xrAPI xrCore luabind luajit)
Loading

0 comments on commit 45aeea4

Please sign in to comment.