summary refs log tree commit diff stats
path: root/lib/word.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/word.cpp')
-rw-r--r--lib/word.cpp56
1 files changed, 28 insertions, 28 deletions
diff --git a/lib/word.cpp b/lib/word.cpp index d13d0bc..a928659 100644 --- a/lib/word.cpp +++ b/lib/word.cpp
@@ -6,118 +6,118 @@
6#include "query.h" 6#include "query.h"
7 7
8namespace verbly { 8namespace verbly {
9 9
10 const object word::objectType = object::word; 10 const object word::objectType = object::word;
11 11
12 const std::list<std::string> word::select = {"word_id", "notion_id", "lemma_id", "tag_count", "position", "group_id"}; 12 const std::list<std::string> word::select = {"word_id", "notion_id", "lemma_id", "tag_count", "position", "group_id"};
13 13
14 const field word::id = field::integerField(object::word, "word_id"); 14 const field word::id = field::integerField(object::word, "word_id");
15 const field word::tagCount = field::integerField(object::word, "tag_count", true); 15 const field word::tagCount = field::integerField(object::word, "tag_count", true);
16 const field word::adjectivePosition = field::integerField(object::word, "position", true); 16 const field word::adjectivePosition = field::integerField(object::word, "position", true);
17 17
18 const field word::notion = field::joinField(object::word, "notion_id", object::notion); 18 const field word::notion = field::joinField(object::word, "notion_id", object::notion);
19 const field word::lemma = field::joinField(object::word, "lemma_id", object::lemma); 19 const field word::lemma = field::joinField(object::word, "lemma_id", object::lemma);
20 const field word::group = field::joinField(object::word, "group_id", object::group, true); 20 const field word::group = field::joinField(object::word, "group_id", object::group, true);
21 21
22 const field word::antonyms = field::selfJoin(object::word, "word_id", "antonymy", "antonym_2_id", "antonym_1_id"); 22 const field word::antonyms = field::selfJoin(object::word, "word_id", "antonymy", "antonym_2_id", "antonym_1_id");
23 23
24 const field word::specifications = field::selfJoin(object::word, "word_id", "specification", "general_id", "specific_id"); 24 const field word::specifications = field::selfJoin(object::word, "word_id", "specification", "general_id", "specific_id");
25 const field word::generalizations = field::selfJoin(object::word, "word_id", "specification", "specific_id", "general_id"); 25 const field word::generalizations = field::selfJoin(object::word, "word_id", "specification", "specific_id", "general_id");
26 26
27 const field word::pertainyms = field::selfJoin(object::word, "word_id", "pertainymy", "noun_id", "pertainym_id"); 27 const field word::pertainyms = field::selfJoin(object::word, "word_id", "pertainymy", "noun_id", "pertainym_id");
28 const field word::antiPertainyms = field::selfJoin(object::word, "word_id", "pertainymy", "pertainym_id", "noun_id"); 28 const field word::antiPertainyms = field::selfJoin(object::word, "word_id", "pertainymy", "pertainym_id", "noun_id");
29 29
30 const field word::mannernyms = field::selfJoin(object::word, "word_id", "mannernymy", "adjective_id", "mannernym_id"); 30 const field word::mannernyms = field::selfJoin(object::word, "word_id", "mannernymy", "adjective_id", "mannernym_id");
31 const field word::antiMannernyms = field::selfJoin(object::word, "word_id", "mannernymy", "mannernym_id", "adjective_id"); 31 const field word::antiMannernyms = field::selfJoin(object::word, "word_id", "mannernymy", "mannernym_id", "adjective_id");
32 32
33 const field word::usageTerms = field::selfJoin(object::word, "word_id", "usage", "domain_id", "term_id"); 33 const field word::usageTerms = field::selfJoin(object::word, "word_id", "usage", "domain_id", "term_id");
34 const field word::usageDomains = field::selfJoin(object::word, "word_id", "usage", "term_id", "domain_id"); 34 const field word::usageDomains = field::selfJoin(object::word, "word_id", "usage", "term_id", "domain_id");
35 35
36 const field word::topicalTerms = field::selfJoin(object::word, "word_id", "topicality", "domain_id", "term_id"); 36 const field word::topicalTerms = field::selfJoin(object::word, "word_id", "topicality", "domain_id", "term_id");
37 const field word::topicalDomains = field::selfJoin(object::word, "word_id", "topicality", "term_id", "domain_id"); 37 const field word::topicalDomains = field::selfJoin(object::word, "word_id", "topicality", "term_id", "domain_id");
38 38
39 const field word::regionalTerms = field::selfJoin(object::word, "word_id", "regionality", "domain_id", "term_id"); 39 const field word::regionalTerms = field::selfJoin(object::word, "word_id", "regionality", "domain_id", "term_id");
40 const field word::regionalDomains = field::selfJoin(object::word, "word_id", "regionality", "term_id", "domain_id"); 40 const field word::regionalDomains = field::selfJoin(object::word, "word_id", "regionality", "term_id", "domain_id");
41 41
42 word::word(const database& db, sqlite3_stmt* row) : db_(&db), valid_(true) 42 word::word(const database& db, sqlite3_stmt* row) : db_(&db), valid_(true)
43 { 43 {
44 id_ = sqlite3_column_int(row, 0); 44 id_ = sqlite3_column_int(row, 0);
45 notionId_ = sqlite3_column_int(row, 1); 45 notionId_ = sqlite3_column_int(row, 1);
46 lemmaId_ = sqlite3_column_int(row, 2); 46 lemmaId_ = sqlite3_column_int(row, 2);
47 47
48 if (sqlite3_column_type(row, 3) != SQLITE_NULL) 48 if (sqlite3_column_type(row, 3) != SQLITE_NULL)
49 { 49 {
50 hasTagCount_ = true; 50 hasTagCount_ = true;
51 tagCount_ = sqlite3_column_int(row, 3); 51 tagCount_ = sqlite3_column_int(row, 3);
52 } 52 }
53 53
54 if (sqlite3_column_type(row, 4) != SQLITE_NULL) 54 if (sqlite3_column_type(row, 4) != SQLITE_NULL)
55 { 55 {
56 adjectivePosition_ = static_cast<positioning>(sqlite3_column_int(row, 4)); 56 adjectivePosition_ = static_cast<positioning>(sqlite3_column_int(row, 4));
57 } 57 }
58 58
59 if (sqlite3_column_type(row, 5) != SQLITE_NULL) 59 if (sqlite3_column_type(row, 5) != SQLITE_NULL)
60 { 60 {
61 hasGroup_ = true; 61 hasGroup_ = true;
62 groupId_ = sqlite3_column_int(row, 5); 62 groupId_ = sqlite3_column_int(row, 5);
63 } 63 }
64 } 64 }
65 65
66 const notion& word::getNotion() const 66 const notion& word::getNotion() const
67 { 67 {
68 if (!valid_) 68 if (!valid_)
69 { 69 {
70 throw std::domain_error("Bad access to uninitialized word"); 70 throw std::domain_error("Bad access to uninitialized word");
71 } 71 }
72 72
73 if (!notion_) 73 if (!notion_)
74 { 74 {
75 notion_ = db_->notions(notion::id == notionId_).first(); 75 notion_ = db_->notions(notion::id == notionId_).first();
76 } 76 }
77 77
78 return notion_; 78 return notion_;
79 } 79 }
80 80
81 const lemma& word::getLemma() const 81 const lemma& word::getLemma() const
82 { 82 {
83 if (!valid_) 83 if (!valid_)
84 { 84 {
85 throw std::domain_error("Bad access to uninitialized word"); 85 throw std::domain_error("Bad access to uninitialized word");
86 } 86 }
87 87
88 if (!lemma_) 88 if (!lemma_)
89 { 89 {
90 lemma_ = db_->lemmas(lemma::id == lemmaId_).first(); 90 lemma_ = db_->lemmas(lemma::id == lemmaId_).first();
91 } 91 }
92 92
93 return lemma_; 93 return lemma_;
94 } 94 }
95 95
96 const group& word::getGroup() const 96 const group& word::getGroup() const
97 { 97 {
98 if (!valid_) 98 if (!valid_)
99 { 99 {
100 throw std::domain_error("Bad access to uninitialized word"); 100 throw std::domain_error("Bad access to uninitialized word");
101 } 101 }
102 102
103 if (!hasGroup_) 103 if (!hasGroup_)
104 { 104 {
105 throw std::domain_error("Word does not have a group"); 105 throw std::domain_error("Word does not have a group");
106 } 106 }
107 107
108 if (!group_) 108 if (!group_)
109 { 109 {
110 group_ = db_->groups(group::id == groupId_).first(); 110 group_ = db_->groups(group::id == groupId_).first();
111 } 111 }
112 112
113 return group_; 113 return group_;
114 } 114 }
115 115
116 std::string word::getBaseForm() const 116 std::string word::getBaseForm() const
117 { 117 {
118 return getLemma().getBaseForm().getText(); 118 return getLemma().getBaseForm().getText();
119 } 119 }
120 120
121 std::vector<std::string> word::getInflections(inflection category) const 121 std::vector<std::string> word::getInflections(inflection category) const
122 { 122 {
123 std::vector<std::string> result; 123 std::vector<std::string> result;
@@ -128,5 +128,5 @@ namespace verbly {
128 128
129 return result; 129 return result;
130 } 130 }
131 131
132}; 132};