/** This file belong to the KMPlayer project, a movie player plugin for Konqueror Copyright (C) 2007 Koos Vriezen This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA **/ #ifndef _TRIE_STRING_H_ #define _TRIE_STRING_H_ #include namespace KMPlayer { class TrieNode; class KMPLAYER_EXPORT TrieString { TrieNode * node; friend bool operator == (const TrieString & s1, const TrieString & s2); friend bool operator == (const TrieString & s, const char * utf8); friend bool operator == (const char * utf8, const TrieString & s); friend bool operator != (const TrieString & s1, const TrieString & s2); public: TrieString (); TrieString (const TQString & s); TrieString (const char * utf8); TrieString (const TrieString & s); ~TrieString (); TQString toString () const; bool isNull () const; void clear (); bool startsWith (const TrieString & s) const; bool startsWith (const char * str) const; TrieString & operator = (const TrieString & s); TrieString & operator = (const char * utf8); bool operator < (const TrieString & s) const; }; inline TrieString::TrieString () : node (0L) {} class KMPLAYER_EXPORT StringPool { public: static void init(); static void reset(); static TrieString attr_id; static TrieString attr_name; static TrieString attr_src; static TrieString attr_url; static TrieString attr_href; static TrieString attr_width; static TrieString attr_height; static TrieString attr_top; static TrieString attr_left; static TrieString attr_bottom; static TrieString attr_right; static TrieString attr_title; static TrieString attr_begin; static TrieString attr_dur; static TrieString attr_end; static TrieString attr_region; static TrieString attr_target; static TrieString attr_type; static TrieString attr_value; static TrieString attr_fill; }; inline bool TrieString::isNull () const { return !node; } inline bool operator == (const TrieString & s1, const TrieString & s2) { return s1.node == s2.node; } bool operator == (const TrieString & s, const char * utf8); inline bool operator == (const char * utf8, const TrieString & s) { return s == utf8; } inline bool operator != (const TrieString & s1, const TrieString & s2) { return s1.node != s2.node; } void dumpTrie (); } // namespace #endif // _TRIE_STRING_H_