// Site Mapper // // Douglas Thrift // // $Id$ #ifndef _SiteMapper_hpp_ #define _SiteMapper_hpp_ #include #ifdef MENES_PRAGMA_ONCE #pragma once #endif #include #include #include #include #include #include #include "Page.hpp" struct LessThan { _finline static bool Execute(const cse::String &left, const cse::String &right) { const cse::String::Data &left_(left), &right_(right); int value(ext::Compare(left.Begin(), right.Begin(), left.GetSize() < right.GetSize() ? left.GetSize() : right.GetSize())); if (value < 0) return true; else if (!value) return left.GetSize() < right.GetSize(); else return false; } }; class SiteMapper { private: cse::String comment; ext::Vector pages; ext::RedBlackMap, LessThan>, LessThan> newPages; void oldMap(const cse::String &siteMap); void oldMap(ext::Vector &pages, xml::Node* list); void newIndex(const cse::String &siteIndex); bool newIndex(ext::Vector &pages, Page &page); void newMap(const cse::String &siteMap); void newMap(ext::Vector &pages, const cse::String &childOf, ext::RedBlackMap, LessThan> &newPages); public: SiteMapper(const cse::String &siteIndex, const cse::String &siteMap); static cse::String program; static bool debug; }; #endif // _SiteMapper_hpp_