summaryrefslogtreecommitdiffstats
path: root/src/uscxml/util/Trie.h
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-04-22 14:02:03 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-04-22 14:02:03 (GMT)
commit1fb6bcf30f954e426f2d3002d14887574fb941dd (patch)
tree08cff7f2b879c50efe79e3c04d255075522af862 /src/uscxml/util/Trie.h
parent71c334bf4e35559496feac3f3cf00b72ceb88812 (diff)
downloaduscxml-1fb6bcf30f954e426f2d3002d14887574fb941dd.zip
uscxml-1fb6bcf30f954e426f2d3002d14887574fb941dd.tar.gz
uscxml-1fb6bcf30f954e426f2d3002d14887574fb941dd.tar.bz2
Major refactoring
- Moved tests - Changes to promela datamodel - Implemented Trie
Diffstat (limited to 'src/uscxml/util/Trie.h')
-rw-r--r--src/uscxml/util/Trie.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/uscxml/util/Trie.h b/src/uscxml/util/Trie.h
new file mode 100644
index 0000000..5c2d14e
--- /dev/null
+++ b/src/uscxml/util/Trie.h
@@ -0,0 +1,61 @@
+/**
+ * @file
+ * @author 2012-2014 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de)
+ * @copyright Simplified BSD
+ *
+ * @cond
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the FreeBSD license as published by the FreeBSD
+ * project.
+ *
+ * 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.
+ *
+ * You should have received a copy of the FreeBSD license along with this
+ * program. If not, see <http://www.opensource.org/licenses/bsd-license>.
+ * @endcond
+ */
+
+#ifndef TRIE_H_UZMQRBO5
+#define TRIE_H_UZMQRBO5
+
+#include <string>
+#include <map>
+#include <list>
+
+namespace uscxml {
+
+struct TrieNode {
+ TrieNode();
+ virtual ~TrieNode();
+
+ bool hasWord;
+ int identifier;
+ std::string value;
+ std::map<std::string, TrieNode*> childs;
+ void dump(int indent = 0);
+};
+
+struct Trie {
+ Trie();
+ Trie(const std::string& seperator);
+ virtual ~Trie();
+
+ void addWord(const std::string& word);
+ size_t getNextToken(const std::string& word, size_t offset, std::string& token);
+
+ TrieNode* getNodeWithPrefix(const std::string& prefix);
+ std::list<TrieNode*> getWordsWithPrefix(const std::string& prefix);
+ std::list<TrieNode*> getChildsWithWords(TrieNode* node);
+ void dump();
+
+ TrieNode* root;
+ std::string seperator;
+ int lastIdentifier;
+};
+
+}
+
+
+#endif /* end of include guard: TRIE_H_UZMQRBO5 */