Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
TypeContainerFunctions.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef TYPECONTAINER_FUNCTIONS_H
7
#define TYPECONTAINER_FUNCTIONS_H
8
9
/*
10
* Here you'll find a list of helper functions to make
11
* the TypeContainer usefull. Without it, its hard
12
* to access or mutate the container.
13
*/
14
15
#include "
Define.h
"
16
#include "
Dynamic/TypeList.h
"
17
#include <map>
18
19
namespace
Skyfire
20
{
21
/* ContainerMapList Helpers */
22
// count functions
23
template
<
class
SPECIFIC_TYPE>
size_t
Count
(
const
ContainerMapList<SPECIFIC_TYPE>
& elements, SPECIFIC_TYPE*
/*fake*/
)
24
{
25
return
elements.
_element
.getSize();
26
}
27
28
template
<
class
SPECIFIC_TYPE>
size_t
Count
(
const
ContainerMapList<TypeNull>
&
/*elements*/
, SPECIFIC_TYPE*
/*fake*/
)
29
{
30
return
0;
31
}
32
33
template
<
class
SPECIFIC_TYPE,
class
T>
size_t
Count
(
const
ContainerMapList<T>
&
/*elements*/
, SPECIFIC_TYPE*
/*fake*/
)
34
{
35
return
0;
36
}
37
38
template
<
class
SPECIFIC_TYPE,
class
T>
size_t
Count
(
const
ContainerMapList
<
TypeList<SPECIFIC_TYPE, T>
>& elements, SPECIFIC_TYPE* fake)
39
{
40
return
Count
(elements._elements, fake);
41
}
42
43
template
<
class
SPECIFIC_TYPE,
class
H,
class
T>
size_t
Count
(
const
ContainerMapList
<
TypeList<H, T>
>& elements, SPECIFIC_TYPE* fake)
44
{
45
return
Count
(elements._TailElements, fake);
46
}
47
48
// non-const insert functions
49
template
<
class
SPECIFIC_TYPE> SPECIFIC_TYPE*
Insert
(
ContainerMapList<SPECIFIC_TYPE>
& elements, SPECIFIC_TYPE* obj)
50
{
51
//elements._element[hdl] = obj;
52
obj->AddToGrid(elements.
_element
);
53
return
obj;
54
}
55
56
template
<
class
SPECIFIC_TYPE> SPECIFIC_TYPE*
Insert
(
ContainerMapList<TypeNull>
&
/*elements*/
, SPECIFIC_TYPE*
/*obj*/
)
57
{
58
return
NULL;
59
}
60
61
// this is a missed
62
template
<
class
SPECIFIC_TYPE,
class
T> SPECIFIC_TYPE*
Insert
(
ContainerMapList<T>
&
/*elements*/
, SPECIFIC_TYPE*
/*obj*/
)
63
{
64
return
NULL;
// a missed
65
}
66
67
// Recursion
68
template
<
class
SPECIFIC_TYPE,
class
H,
class
T> SPECIFIC_TYPE*
Insert
(
ContainerMapList
<
TypeList<H, T>
>& elements, SPECIFIC_TYPE* obj)
69
{
70
SPECIFIC_TYPE* t =
Insert
(elements._elements, obj);
71
return
(t != NULL ? t :
Insert
(elements._TailElements, obj));
72
}
73
75
//template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<SPECIFIC_TYPE> & /*elements*/, SPECIFIC_TYPE *obj)
76
//{
77
// obj->GetGridRef().unlink();
78
// return obj;
79
//}
80
81
//template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<TypeNull> &/*elements*/, SPECIFIC_TYPE * /*obj*/)
82
//{
83
// return NULL;
84
//}
85
87
//template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Remove(ContainerMapList<T> &/*elements*/, SPECIFIC_TYPE * /*obj*/)
88
//{
89
// return NULL; // a missed
90
//}
91
92
//template<class SPECIFIC_TYPE, class T, class H> SPECIFIC_TYPE* Remove(ContainerMapList<TypeList<H, T> > &elements, SPECIFIC_TYPE *obj)
93
//{
94
// // The head element is bad
95
// SPECIFIC_TYPE* t = Remove(elements._elements, obj);
96
// return ( t != NULL ? t : Remove(elements._TailElements, obj) );
97
//}
98
}
99
#endif
100
Define.h
TypeList.h
Skyfire
Definition
AuthPatchTransfer.h:12
Skyfire::Count
size_t Count(const ContainerMapList< SPECIFIC_TYPE > &elements, SPECIFIC_TYPE *)
Definition
TypeContainerFunctions.h:23
Skyfire::Insert
SPECIFIC_TYPE * Insert(ContainerMapList< SPECIFIC_TYPE > &elements, SPECIFIC_TYPE *obj)
Definition
TypeContainerFunctions.h:49
ContainerMapList
Definition
TypeContainer.h:26
ContainerMapList::_element
GridRefManager< OBJECT > _element
Definition
TypeContainer.h:28
TypeList
Definition
TypeList.h:19
src
server
shared
Dynamic
TypeContainerFunctions.h
Generated on
for Project SkyFire Core by
1.17.0