From ec6bfe238af2f846a5948e95b1d725cf9abe9afb Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 26 Apr 2016 01:24:16 +0300 Subject: Add memory count functions into Action and Animation. --- src/resources/sprite/spritedef.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/resources/sprite/spritedef.h | 4 ++++ 2 files changed, 41 insertions(+) (limited to 'src/resources/sprite') diff --git a/src/resources/sprite/spritedef.cpp b/src/resources/sprite/spritedef.cpp index d157028ef..ba3abaec9 100644 --- a/src/resources/sprite/spritedef.cpp +++ b/src/resources/sprite/spritedef.cpp @@ -593,3 +593,40 @@ bool SpriteDef::addSequence(const int start, } return false; } + +int SpriteDef::calcMemoryLocal() +{ + int sz = sizeof(SpriteDef) + + sizeof(ImageSets) + + sizeof(Actions) + + sizeof(std::set) + + Resource::calcMemoryLocal(); + FOR_EACH (std::set::const_iterator, it, mProcessedFiles) + { + sz += (*it).capacity(); + } + return sz; +} + +int SpriteDef::calcMemoryChilds(const int level) +{ + int sz = 0; + FOR_EACH (ImageSets::iterator, it, mImageSets) + { + sz += (*it).first.capacity(); + ImageSet *const imageSet = (*it).second; + sz += imageSet->calcMemory(level + 1); + } + FOR_EACH (ActionsIter, it, mActions) + { + sz += sizeof(unsigned); + ActionMap *const actionMap = (*it).second; + FOR_EACHP (ActionMap::iterator, it2, actionMap) + { + sz += (*it2).first.capacity(); + Action *const action = (*it2).second; + sz += action->calcMemory(level + 1); + } + } + return sz; +} diff --git a/src/resources/sprite/spritedef.h b/src/resources/sprite/spritedef.h index c7a86f1e6..aea602cee 100644 --- a/src/resources/sprite/spritedef.h +++ b/src/resources/sprite/spritedef.h @@ -68,6 +68,10 @@ class SpriteDef final : public Resource void addAction(const unsigned hp, const std::string &name, Action *const action); + int calcMemoryLocal() override final; + + int calcMemoryChilds(const int level) override final; + static bool addSequence(const int start, const int end, const int delay, -- cgit v1.2.3-70-g09d2