/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ #ifndef plPageOptimizer_h_inc #define plPageOptimizer_h_inc #include "../pnKeyedObject/plKey.h" #include "../pnKeyedObject/plUoid.h" #include #include class plRegistryPageNode; class plResManager; class plPageOptimizer { protected: typedef std::vector KeyVec; typedef std::set KeySet; KeyVec fKeyLoadOrder; // The order objects were loaded in KeySet fLoadedKeys; // Keys we've loaded objects for, for quick lookup KeyVec fAllKeys; // All the keys in the page std::vector fBuf; bool fOptimized; // True after optimization if the page was already optimized const char* fPagePath; // Path to our page char fTempPagePath[512]; // Path to the temp output page plLocation fLoc; // Location of our page plRegistryPageNode* fPageNode; // PageNode for our page plResManager* fResMgr; static plPageOptimizer* fInstance; static void KeyedObjectProc(plKey key); void IWriteKeyData(hsStream* oldPage, hsStream* newPage, plKey key); void IFindLoc(); void IRewritePage(); public: plPageOptimizer(const char* pagePath); void Optimize(); }; #endif // plPageOptimizer_h_inc