#pragma once #include "BaseTreePoolBuilder.h" class StandardPoolBuilder : public BaseTreePoolBuilder { public: using BaseTreePoolBuilder::BaseTreePoolBuilder; virtual ~StandardPoolBuilder() override {} std::string GetFullFileName(const std::string& fileName) const override; std::vector GetPointerSizesPerLevel(const BaseTree* tree) const; protected: void InitBuild(const BaseTree* tree) override; void FinishBuild(const BaseTree* tree) override; bool WordAligned() const override { return false; } unsigned8 GetBytesPerPointer(const BaseTree* tree, const unsigned32& nodeId) const override; std::vector WrapPointer(const BaseTree* root, const unsigned32& nodeIndex, const unsigned32& indexInPool, const unsigned32& pointer) const override; size_t GetPoolInfoSize(const BaseTree* tree) const override; std::vector GetPoolInfo(const BaseTree* tree, const std::vector& nodePointers, const std::vector& nodeOrder) override; //void StandardPoolBuilder::OrderNodes(const BaseTree* tree, std::vector& nodeOrder) const override; void CalculatePointerSizesPerLevel(const BaseTree* tree); void ClearVariables(); // Variables used during the current build bool mIsBuildingTree = false; std::vector mPointerSizesPerLevel; std::vector mLevelOffsets; };