summaryrefslogtreecommitdiff
path: root/inputmethods/dasher/AlphabetMap.cpp
Unidiff
Diffstat (limited to 'inputmethods/dasher/AlphabetMap.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/dasher/AlphabetMap.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/inputmethods/dasher/AlphabetMap.cpp b/inputmethods/dasher/AlphabetMap.cpp
index 09e2c72..c687e45 100644
--- a/inputmethods/dasher/AlphabetMap.cpp
+++ b/inputmethods/dasher/AlphabetMap.cpp
@@ -1,47 +1,47 @@
1// AlphabetMap.cpp 1// AlphabetMap.cpp
2// 2//
3///////////////////////////////////////////////////////////////////////////// 3/////////////////////////////////////////////////////////////////////////////
4// 4//
5// Copyright (c) 2002 Iain Murray 5// Copyright (c) 2002 Iain Murray
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9#include "AlphabetMap.h" 9#include "AlphabetMap.h"
10 10
11using namespace Dasher; 11using namespace Dasher;
12using namespace std; 12using namespace std;
13 13
14alphabet_map::alphabet_map(unsigned int InitialTableSize) 14alphabet_map::alphabet_map(unsigned int InitialTableSize)
15 : Undefined(0), HashTable(InitialTableSize<<1) 15 : HashTable(InitialTableSize<<1), Undefined(0)
16{ 16{
17 Entries.reserve(InitialTableSize); 17 Entries.reserve(InitialTableSize);
18} 18}
19 19
20 20
21void alphabet_map::Add(const string& Key, symbol Value) 21void alphabet_map::Add(const string& Key, symbol Value)
22{ 22{
23 RecursiveAdd(Key, Value, false); 23 RecursiveAdd(Key, Value, false);
24} 24}
25 25
26 26
27void alphabet_map::RecursiveAdd(const string& Key, symbol Value, bool PrefixFlag) 27void alphabet_map::RecursiveAdd(const string& Key, symbol Value, bool PrefixFlag)
28{ 28{
29 Entry*& HashEntry = HashTable[Hash(Key)]; 29 Entry*& HashEntry = HashTable[Hash(Key)];
30 30
31 // Loop through Entries with the correct Hash value. 31 // Loop through Entries with the correct Hash value.
32 for (Entry* i = HashEntry; i; i=i->Next) { 32 for (Entry* i = HashEntry; i; i=i->Next) {
33 if (i->Key==Key) { 33 if (i->Key==Key) {
34 if (PrefixFlag) { 34 if (PrefixFlag) {
35 // Just tagging - don't change symbol. Recurse if necessary 35 // Just tagging - don't change symbol. Recurse if necessary
36 i->KeyIsPrefix = true; 36 i->KeyIsPrefix = true;
37 if (Key.size()>1) 37 if (Key.size()>1)
38 RecursiveAdd(Key.substr(Key.size()-1), Undefined, true); 38 RecursiveAdd(Key.substr(Key.size()-1), Undefined, true);
39 } else { 39 } else {
40 // Add symbol and leave 40 // Add symbol and leave
41 i->Symbol = Value; 41 i->Symbol = Value;
42 } 42 }
43 return; 43 return;
44 } 44 }
45 } 45 }
46 46
47 // When hash table gets 1/2 full... 47 // When hash table gets 1/2 full...