#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();
}