diff options
Diffstat (limited to 'lib/word.h')
| -rw-r--r-- | lib/word.h | 50 |
1 files changed, 32 insertions, 18 deletions
| diff --git a/lib/word.h b/lib/word.h index 8c8de51..f52cc4d 100644 --- a/lib/word.h +++ b/lib/word.h | |||
| @@ -3,14 +3,13 @@ | |||
| 3 | 3 | ||
| 4 | #include <stdexcept> | 4 | #include <stdexcept> |
| 5 | #include <map> | 5 | #include <map> |
| 6 | #include <hkutil/database.h> | ||
| 6 | #include "field.h" | 7 | #include "field.h" |
| 7 | #include "filter.h" | 8 | #include "filter.h" |
| 8 | #include "notion.h" | 9 | #include "notion.h" |
| 9 | #include "frame.h" | 10 | #include "frame.h" |
| 10 | #include "form.h" | 11 | #include "form.h" |
| 11 | 12 | ||
| 12 | struct sqlite3_stmt; | ||
| 13 | |||
| 14 | namespace verbly { | 13 | namespace verbly { |
| 15 | 14 | ||
| 16 | class database; | 15 | class database; |
| @@ -24,7 +23,7 @@ namespace verbly { | |||
| 24 | 23 | ||
| 25 | // Construct from database | 24 | // Construct from database |
| 26 | 25 | ||
| 27 | word(const database& db, sqlite3_stmt* row); | 26 | word(const database& db, hatkirby::row row); |
| 28 | 27 | ||
| 29 | // Accessors | 28 | // Accessors |
| 30 | 29 | ||
| @@ -93,11 +92,35 @@ namespace verbly { | |||
| 93 | return adjectivePosition_; | 92 | return adjectivePosition_; |
| 94 | } | 93 | } |
| 95 | 94 | ||
| 96 | const notion& getNotion() const; | 95 | const notion& getNotion() const |
| 96 | { | ||
| 97 | if (!valid_) | ||
| 98 | { | ||
| 99 | throw std::domain_error("Bad access to uninitialized word"); | ||
| 100 | } | ||
| 97 | 101 | ||
| 98 | bool hasFrames() const; | 102 | return notion_; |
| 103 | } | ||
| 99 | 104 | ||
| 100 | const std::vector<frame>& getFrames() const; | 105 | bool hasFrames() const |
| 106 | { | ||
| 107 | if (!valid_) | ||
| 108 | { | ||
| 109 | throw std::domain_error("Bad access to uninitialized word"); | ||
| 110 | } | ||
| 111 | |||
| 112 | return !frames_.empty(); | ||
| 113 | } | ||
| 114 | |||
| 115 | const std::vector<frame>& getFrames() const | ||
| 116 | { | ||
| 117 | if (!valid_) | ||
| 118 | { | ||
| 119 | throw std::domain_error("Bad access to uninitialized word"); | ||
| 120 | } | ||
| 121 | |||
| 122 | return frames_; | ||
| 123 | } | ||
| 101 | 124 | ||
| 102 | const form& getBaseForm() const; | 125 | const form& getBaseForm() const; |
| 103 | 126 | ||
| @@ -181,26 +204,17 @@ namespace verbly { | |||
| 181 | private: | 204 | private: |
| 182 | 205 | ||
| 183 | void initializeForm(inflection category) const; | 206 | void initializeForm(inflection category) const; |
| 184 | void initializeFrames() const; | ||
| 185 | 207 | ||
| 186 | bool valid_ = false; | 208 | bool valid_ = false; |
| 187 | |||
| 188 | int id_; | 209 | int id_; |
| 189 | bool hasTagCount_ = false; | 210 | bool hasTagCount_ = false; |
| 190 | int tagCount_; | 211 | int tagCount_; |
| 191 | positioning adjectivePosition_ = positioning::undefined; | 212 | positioning adjectivePosition_ = positioning::undefined; |
| 192 | int notionId_; | 213 | notion notion_; |
| 193 | int lemmaId_; | 214 | std::vector<frame> frames_; |
| 194 | bool hasGroup_ = false; | ||
| 195 | int groupId_; | ||
| 196 | |||
| 197 | const database* db_; | ||
| 198 | |||
| 199 | mutable notion notion_; | ||
| 200 | mutable bool initializedFrames_ = false; | ||
| 201 | mutable std::vector<frame> frames_; | ||
| 202 | mutable std::map<inflection, std::vector<form>> forms_; | 215 | mutable std::map<inflection, std::vector<form>> forms_; |
| 203 | 216 | ||
| 217 | const database& db_; | ||
| 204 | }; | 218 | }; |
| 205 | 219 | ||
| 206 | }; | 220 | }; |
