File indexing completed on 2024-04-21 04:54:13

0001 /*
0002     This file belong to the KMPlayer project, a movie player plugin for Konqueror
0003     SPDX-FileCopyrightText: 2007 Koos Vriezen <koos.vriezen@gmail.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef _TRIE_STRING_H_
0009 #define _TRIE_STRING_H_
0010 
0011 #include "kmplayercommon_export.h"
0012 
0013 #include <QString>
0014 
0015 namespace KMPlayer {
0016 
0017 class TrieNode;
0018 
0019 class KMPLAYERCOMMON_EXPORT TrieString
0020 {
0021     TrieNode * node;
0022     friend bool operator == (const TrieString & s1, const TrieString & s2);
0023     friend bool operator == (const TrieString & s, const char * utf8);
0024     friend bool operator == (const char * utf8, const TrieString & s);
0025     friend bool operator != (const TrieString & s1, const TrieString & s2);
0026 public:
0027     TrieString ();
0028     TrieString (const QString & s);
0029     TrieString (const char * utf8);
0030     TrieString (const char *utf8, int length);
0031     TrieString (const TrieString & s);
0032     ~TrieString ();
0033 
0034     QString toString () const;
0035     bool isNull () const;
0036     void clear ();
0037     bool startsWith (const TrieString & s) const;
0038     bool startsWith (const char * str) const;
0039     TrieString & operator = (const TrieString & s);
0040     TrieString & operator = (const char * utf8);
0041     bool operator < (const TrieString & s) const;
0042 };
0043 
0044 inline TrieString::TrieString () : node (nullptr) {}
0045 
0046 class KMPLAYERCOMMON_EXPORT Ids
0047 {
0048 public:
0049     static void init();
0050     static void reset();
0051 
0052     static TrieString attr_id;
0053     static TrieString attr_name;
0054     static TrieString attr_src;
0055     static TrieString attr_url;
0056     static TrieString attr_href;
0057     static TrieString attr_width;
0058     static TrieString attr_height;
0059     static TrieString attr_top;
0060     static TrieString attr_left;
0061     static TrieString attr_bottom;
0062     static TrieString attr_right;
0063     static TrieString attr_title;
0064     static TrieString attr_begin;
0065     static TrieString attr_dur;
0066     static TrieString attr_end;
0067     static TrieString attr_region;
0068     static TrieString attr_target;
0069     static TrieString attr_type;
0070     static TrieString attr_value;
0071     static TrieString attr_fill;
0072     static TrieString attr_fit;
0073 };
0074 
0075 inline bool TrieString::isNull () const {
0076     return !node;
0077 }
0078 
0079 inline bool operator == (const TrieString & s1, const TrieString & s2) {
0080     return s1.node == s2.node;
0081 }
0082 
0083 bool operator == (const TrieString & s, const char * utf8);
0084 
0085 inline bool operator == (const char * utf8, const TrieString & s) {
0086     return s == utf8;
0087 }
0088 
0089 inline bool operator != (const TrieString & s1, const TrieString & s2) {
0090     return s1.node != s2.node;
0091 }
0092 
0093 void dumpTrie ();
0094 
0095 } // namespace
0096 
0097 #endif // _TRIE_STRING_H_