Skip to content

Commit

Permalink
[FORMATTING] + compile-time dependencies of object_{destroyer|loader].h
Browse files Browse the repository at this point in the history
  • Loading branch information
tamlin-mike authored and Xottab-DUTY committed Aug 5, 2017
1 parent 7f6d671 commit 0c055a7
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 71 deletions.
47 changes: 24 additions & 23 deletions src/Common/object_destroyer.h
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
////////////////////////////////////////////////////////////////////////////
// Module : object_destroyer.h
// Created : 21.01.2003
// Modified : 09.07.2004
// Author : Dmitriy Iassenev
// Description : Object destroyer
// Module : object_destroyer.h
// Created : 21.01.2003
// Modified : 09.07.2004
// Author : Dmitriy Iassenev
// Description : Object destroyer
////////////////////////////////////////////////////////////////////////////

#pragma once
#include "xrCore/xrMemory.h"

struct CDestroyer
{
IC static void delete_data(LPCSTR data) {}
static void delete_data(LPCSTR data)
IC static void delete_data(LPSTR data) { xr_free(data); }
template <typename T1, typename T2>
IC static void delete_data(std::pair<T1, T2>& data)
static void delete_data(std::pair<T1, T2>& data)
{
delete_data(data.first);
delete_data(data.second);
}

template <typename T, int size>
IC static void delete_data(svector<T, size>& data)
static void delete_data(svector<T, size>& data)
{
svector<T, size>::iterator I = data.begin();
svector<T, size>::iterator E = data.end();
Expand All @@ -30,7 +31,7 @@ struct CDestroyer
}

template <typename T, int n>
IC static void delete_data(T (&array)[n])
static void delete_data(T (&array)[n])
{
T* I = array;
T* E = array + n;
Expand All @@ -39,37 +40,37 @@ struct CDestroyer
}

template <typename T1, typename T2>
IC static void delete_data(std::queue<T1, T2>& data)
static void delete_data(std::queue<T1, T2>& data)
{
std::queue<T1, T2> temp = data;
for (; !temp.empty(); temp.pop())
delete_data(temp.front());
}

template <template <typename _1, typename _2> class T1, typename T2, typename T3>
IC static void delete_data(T1<T2, T3>& data, bool)
static void delete_data(T1<T2, T3>& data, bool)
{
T1<T2, T3> temp = data;
for (; !temp.empty(); temp.pop())
delete_data(temp.top());
}

template <template <typename _1, typename _2, typename _3> class T1, typename T2, typename T3, typename T4>
IC static void delete_data(T1<T2, T3, T4>& data, bool)
static void delete_data(T1<T2, T3, T4>& data, bool)
{
T1<T2, T3, T4> temp = data;
for (; !temp.empty(); temp.pop())
delete_data(temp.top());
}

template <typename T1, typename T2>
IC static void delete_data(xr_stack<T1, T2>& data)
static void delete_data(xr_stack<T1, T2>& data)
{
delete_data(data, true);
}

template <typename T1, typename T2, typename T3>
IC static void delete_data(std::priority_queue<T1, T2, T3>& data)
static void delete_data(std::priority_queue<T1, T2, T3>& data)
{
delete_data(data, true);
}
Expand All @@ -78,12 +79,12 @@ struct CDestroyer
struct CHelper1
{
template <bool a>
IC static void delete_data(T&)
static void delete_data(T&)
{
}

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

template <>
IC static void delete_data<true>(T& data)
static void delete_data<true>(T& data)
{
if (data)
CDestroyer::delete_data(*data);
Expand All @@ -110,7 +111,7 @@ struct CDestroyer
struct CHelper3
{
template <typename T>
IC static void delete_data(T& data)
static void delete_data(T& data)
{
T::iterator I = data.begin();
T::iterator E = data.end();
Expand All @@ -124,27 +125,27 @@ struct CDestroyer
struct CHelper4
{
template <bool a>
IC static void delete_data(T& data)
static void delete_data(T& data)
{
CHelper2<T>::delete_data<object_type_traits::is_pointer<T>::value>(data);
}

template <>
IC static void delete_data<true>(T& data)
static void delete_data<true>(T& data)
{
CHelper3::delete_data(data);
}
};

template <typename T>
IC static void delete_data(T& data)
static void delete_data(T& data)
{
CHelper4<T>::delete_data<object_type_traits::is_stl_container<T>::value>(data);
}
};

template <typename T>
IC void delete_data(const T& data)
void delete_data(const T& data)
{
T* temp = const_cast<T*>(&data);
CDestroyer::delete_data(*temp);
Expand Down
Loading

0 comments on commit 0c055a7

Please sign in to comment.