annotate HuffmanString.cpp @ 56:76846cb92b5c

Clean up at exit. Add getSet function.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Thu, 13 Sep 2012 23:49:18 +0200
parents fda70a362ed5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
1 #include "HuffmanString.hpp"
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
2
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
3 HuffmanSet* HuffmanString::set = 0;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
4
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
5 HuffmanString::HuffmanString(const QString& str, HuffmanSet* set)
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
6 {
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
7 set = this->set;
56
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
8 if (!set) {
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
9 set = new HuffmanSet();
56
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
10 atexit(&atExit);
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
11 }
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
12 this->set = set;
34
fda70a362ed5 Remove whitespace.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 21
diff changeset
13
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
14 key = set->insert(str);
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
15 }
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
16
56
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
17 void HuffmanString::atExit()
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
18 {
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
19 delete set;
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
20 set = 0;
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
21 }
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
22
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
23 QString HuffmanString::toString() const
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
24 {
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
25 return set->value(key);
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
26 }
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
27
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
28 HuffmanString::operator QString() const
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
29 {
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
30 return toString();
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
31 }
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
32
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
33 bool HuffmanString::operator<(const HuffmanString& rhs) const
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
34 {
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
35 return this->toString() < rhs.toString();
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
36 }
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
37
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
38 bool HuffmanString::operator==(const HuffmanString& rhs) const
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
39 {
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
40 return this->toString() == rhs.toString();
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
41 }
56
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
42
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
43 HuffmanSet& HuffmanString::getSet()
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
44 {
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
45 return *set;
76846cb92b5c Clean up at exit.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 34
diff changeset
46 }