1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "gfICatalogueEntry.h"

#include <fsCore/src/debug/fsAssert.h>
#include <fsCore/src/fsNCoreUtils.h>


fsS32 gfICatalogueEntry::numChildrenGet() const
{
	return mChildren.size();
}

const gfICatalogueEntry* gfICatalogueEntry::childGetByIndex(fsS32 pIndex) const
{
	fsAssert(pIndex < static_cast< fsS32 >( mChildren.size()), "Index out of range.");
	return mChildren[pIndex];
}

const gfICatalogueEntry* gfICatalogueEntry::parentGet() const
{
	return mParent;
}

fsStr gfICatalogueEntry::textKeyGet() const
{
	return mTextKey;
}

fsStr gfICatalogueEntry::descriptionKeyGet() const
{
	return mDescriptionKey;
}

void gfICatalogueEntry::childAdd(gfICatalogueEntry* const pChild)
{
	if (!isDuplicateName(pChild->mName))<--- Condition '!isDuplicateName(pChild->mName)' is always true<--- Calling function 'isDuplicateName' returns 0
	{
		pChild->mParent = this;
		mChildren.push_back(pChild);
	}
}

gfICatalogueEntry* const gfICatalogueEntry::childFind(const fsStr& pName) const
{
	for (gfICatalogueEntry* child : mChildren)
	{
		if (pName == child->mName)
		{
			return child;
		}

		gfICatalogueEntry* const matchingGrandchild = child->childFind(pName);
		if (matchingGrandchild != nullptr)
		{
			return matchingGrandchild;
		}
	}
	return nullptr;
}

fsBool gfICatalogueEntry::isDuplicateName(const fsStr& pName)
{
#if defined LITE_DEBUG
	return childFind( pName ) != NULL;
#else
	return false;
#endif
}

void gfICatalogueEntry::childrenDestroy()
{
	fsNCoreUtils::clearSequenceContainerOfPtrs(mChildren);
}

gfICatalogueEntry::gfICatalogueEntry(const fsStr& pName, const fsStr& pTextKey, const fsStr& pDescriptionKey) :
	mParent(nullptr),
	mName(pName),
	mTextKey(pTextKey),
	mDescriptionKey(pDescriptionKey)
{
}

gfICatalogueEntry::~gfICatalogueEntry()
{
	childrenDestroy();
}