FLImaging 6.5.8.1
Trie.h
1#pragma once
2#include <unordered_map>
3#include <string>
4#include <vector>
5
18namespace FLImaging
19{
21 namespace Foundation
22 {
33 class FL_EXPORT CTrieNode
34 {
35 public:
46
56 CTrieNode(const CTrieNode& rhs);
57
67 CTrieNode(const CTrieNode* pRhs);
68
76 virtual ~CTrieNode();
77
91 virtual const CResult Assign(const CTrieNode& rhs);
92
106 virtual const CResult Assign(const CTrieNode* pRhs);
107
117 virtual const CResult Clear();
118
119 virtual CTrieNode* DuplicateObject() const;
120 virtual CTrieNode* CreateObject() const;
121
122 public:
127 std::unordered_map<wchar_t, CTrieNode*>& m_mapChildren;
128
134
139 std::vector<std::wstring>& m_vctWstrWords;
140 };
141
152 class FL_EXPORT CTrie
153 {
154 public:
163
173 CTrie(const CTrie& rhs);
174
184 CTrie(const CTrie* pRhs);
185
193 virtual ~CTrie();
194
208 virtual const CResult Assign(const CTrie& rhs);
209
223 virtual const CResult Assign(const CTrie* pRhs);
224
234 virtual const CResult SetNodeTemplate(const CTrieNode* pTrieNodeTemplate);
235
245 virtual const CTrieNode* GetNodeTemplate() const;
246
260 virtual CTrieNode* Insert(const std::wstring& wstrWord);
261
275 virtual const CResult Remove(const std::wstring& wstrWord);
276
293 virtual CTrieNode* Rename(const std::wstring& wstrOldWord, const std::wstring& wstrNewWord);
294
306 virtual bool FindExact(const std::wstring& wstrWord) const;
307
321 virtual bool FindSubstring(const std::wstring& wstrSubstring, std::vector<std::wstring>& vctResults) const;
322
332 virtual const CResult Clear();
333
345 virtual const CTrieNode* FindExactNode(const std::wstring& wstrWord) const;
346
347 protected:
359 virtual const CTrieNode* FindNode(const std::wstring& wstrKey) const;
360
376 virtual bool RemoveHelper(CTrieNode* pNode, const std::wstring& wstrWord, int32_t i32Depth);
377
389 virtual void CollectWords(const CTrieNode* pNode, std::vector<std::wstring>& vctResults) const;
390
391 protected:
403 virtual wchar_t NormalizeChar(wchar_t ch) const;
404
405 protected:
411
417 };
418 }
419}
FLImaging module execution result object.
Definition ResultsDef.h:1514
Implements a Trie structure for efficient string searching.
Definition Trie.h:153
virtual CTrieNode * Rename(const std::wstring &wstrOldWord, const std::wstring &wstrNewWord)
Edits an existing word in the Trie.
CTrie(const CTrie &rhs)
Copy constructor for the CTrie class.
virtual ~CTrie()
Destructor.
virtual const CResult Clear()
Clears all data in the Trie.
virtual const CTrieNode * FindNode(const std::wstring &wstrKey) const
Finds a specific key in the Trie.
virtual const CTrieNode * GetNodeTemplate() const
Gets the current node template.
CTrie()
Default constructor.
virtual wchar_t NormalizeChar(wchar_t ch) const
Normalizes a character to handle case-insensitive search.
virtual bool FindSubstring(const std::wstring &wstrSubstring, std::vector< std::wstring > &vctResults) const
Searches for words containing a given substring.
virtual const CResult Assign(const CTrie *pRhs)
Assigns properties from another CTrie object using a pointer.
virtual void CollectWords(const CTrieNode *pNode, std::vector< std::wstring > &vctResults) const
Collects all words ending at a given node.
CTrie(const CTrie *pRhs)
Pointer-based copy constructor for the CTrie class.
virtual bool RemoveHelper(CTrieNode *pNode, const std::wstring &wstrWord, int32_t i32Depth)
Recursively removes a word from the Trie.
virtual const CResult Remove(const std::wstring &wstrWord)
Removes a word from the Trie.
CTrieNode * m_pRoot
Definition Trie.h:410
CTrieNode * m_pNodeTemplate
Definition Trie.h:416
virtual CTrieNode * Insert(const std::wstring &wstrWord)
Inserts a word into the CTrie.
virtual bool FindExact(const std::wstring &wstrWord) const
Searches for an exact word.
virtual const CResult Assign(const CTrie &rhs)
Assigns properties from another CTrie object using a reference.
virtual const CResult SetNodeTemplate(const CTrieNode *pTrieNodeTemplate)
Sets the node template used for creating new nodes.
virtual const CTrieNode * FindExactNode(const std::wstring &wstrWord) const
Returns the node where the given word exactly matches.
Represents a node in the Trie structure.
Definition Trie.h:34
CTrieNode(const CTrieNode &rhs)
Copy constructor for the CTrieNode class.
std::vector< std::wstring > & m_vctWstrWords
Definition Trie.h:139
virtual const CResult Assign(const CTrieNode *pRhs)
Assigns properties from another CTrieNode object using a pointer.
virtual ~CTrieNode()
Destructor.
CTrieNode()
Default constructor.
virtual const CResult Clear()
Clears all data in the CTrieNode.
CTrieNode(const CTrieNode *pRhs)
Pointer-based copy constructor for the CTrieNode class.
bool m_bEndOfWord
Definition Trie.h:133
virtual const CResult Assign(const CTrieNode &rhs)
Assigns properties from another CTrieNode object using a reference.
std::unordered_map< wchar_t, CTrieNode * > & m_mapChildren
Definition Trie.h:127