summary refs log tree commit diff stats
path: root/generator/group.cpp
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2018-03-31 23:05:02 -0400
committerKelly Rauchenberger <fefferburbia@gmail.com>2018-03-31 23:05:02 -0400
commit75e947fa0021547f460496d1c3aef5b61af4c669 (patch)
tree64559a5329b3e5983ffdfe7ee2ad65c7c938e98d /generator/group.cpp
parent3554df2e34e63364eea3a7998e0dfb0e6be65ca4 (diff)
downloadverbly-75e947fa0021547f460496d1c3aef5b61af4c669.tar.gz
verbly-75e947fa0021547f460496d1c3aef5b61af4c669.tar.bz2
verbly-75e947fa0021547f460496d1c3aef5b61af4c669.zip
Migrated generator to hkutil
Diffstat (limited to 'generator/group.cpp')
-rw-r--r--generator/group.cpp59
1 files changed, 31 insertions, 28 deletions
diff --git a/generator/group.cpp b/generator/group.cpp index 5b23578..1ffb9d9 100644 --- a/generator/group.cpp +++ b/generator/group.cpp
@@ -1,10 +1,8 @@
1#include "group.h" 1#include "group.h"
2#include <stdexcept> 2#include <stdexcept>
3#include <list> 3#include <list>
4#include "database.h" 4#include <hkutil/string.h>
5#include "field.h"
6#include "frame.h" 5#include "frame.h"
7#include "../lib/util.h"
8 6
9namespace verbly { 7namespace verbly {
10 namespace generator { 8 namespace generator {
@@ -50,28 +48,26 @@ namespace verbly {
50 return roles_.at(name); 48 return roles_.at(name);
51 } 49 }
52 50
53 database& operator<<(database& db, const group& arg) 51 hatkirby::database& operator<<(hatkirby::database& db, const group& arg)
54 { 52 {
55 // Serialize each frame 53 // Serialize each frame
56 for (const frame& f : arg.getFrames()) 54 for (const frame& f : arg.getFrames())
57 { 55 {
58 // First, serialize the group/frame relationship 56 // First, serialize the group/frame relationship
59 { 57 db.insertIntoTable(
60 std::list<field> fields; 58 "frames",
61 59 {
62 fields.emplace_back("frame_id", f.getId()); 60 { "frame_id", f.getId() },
63 fields.emplace_back("group_id", arg.getId()); 61 { "group_id", arg.getId() },
64 fields.emplace_back("length", f.getLength()); 62 { "length", f.getLength() }
65 63 });
66 db.insertIntoTable("frames", std::move(fields));
67 }
68 64
69 // Then, serialize the frame parts in the context of the group 65 // Then, serialize the frame parts in the context of the group
70 for (int partIndex = 0; partIndex < f.getLength(); partIndex++) 66 for (int partIndex = 0; partIndex < f.getLength(); partIndex++)
71 { 67 {
72 const part& p = f[partIndex]; 68 const part& p = f[partIndex];
73 69
74 std::list<field> fields; 70 std::list<hatkirby::column> fields;
75 fields.emplace_back("part_id", p.getId()); 71 fields.emplace_back("part_id", p.getId());
76 fields.emplace_back("frame_id", f.getId()); 72 fields.emplace_back("frame_id", f.getId());
77 fields.emplace_back("part_index", partIndex); 73 fields.emplace_back("part_index", partIndex);
@@ -92,23 +88,23 @@ namespace verbly {
92 88
93 for (const std::string& s : partSelrestrs) 89 for (const std::string& s : partSelrestrs)
94 { 90 {
95 std::list<field> selrestrFields; 91 db.insertIntoTable(
96 92 "selrestrs",
97 selrestrFields.emplace_back("part_id", p.getId()); 93 {
98 selrestrFields.emplace_back("selrestr", s); 94 { "part_id", p.getId() },
99 95 { "selrestr", s }
100 db.insertIntoTable("selrestrs", std::move(selrestrFields)); 96 });
101 } 97 }
102 98
103 // Short interlude to serialize the synrestrs 99 // Short interlude to serialize the synrestrs
104 for (const std::string& s : p.getNounSynrestrs()) 100 for (const std::string& s : p.getNounSynrestrs())
105 { 101 {
106 std::list<field> synrestrFields; 102 db.insertIntoTable(
107 103 "synrestrs",
108 synrestrFields.emplace_back("part_id", p.getId()); 104 {
109 synrestrFields.emplace_back("synrestr", s); 105 { "part_id", p.getId() },
110 106 { "synrestr", s }
111 db.insertIntoTable("synrestrs", std::move(synrestrFields)); 107 });
112 } 108 }
113 109
114 break; 110 break;
@@ -117,10 +113,17 @@ namespace verbly {
117 case part::type::preposition: 113 case part::type::preposition:
118 { 114 {
119 std::set<std::string> setChoices = p.getPrepositionChoices(); 115 std::set<std::string> setChoices = p.getPrepositionChoices();
120 std::string serializedChoices = implode(std::begin(setChoices), std::end(setChoices), ","); 116
117 std::string serializedChoices =
118 hatkirby::implode(
119 std::begin(setChoices),
120 std::end(setChoices),
121 ",");
121 122
122 fields.emplace_back("prepositions", std::move(serializedChoices)); 123 fields.emplace_back("prepositions", std::move(serializedChoices));
123 fields.emplace_back("preposition_literality", p.isPrepositionLiteral() ? 1 : 0); 124
125 fields.emplace_back("preposition_literality",
126 p.isPrepositionLiteral() ? 1 : 0);
124 127
125 break; 128 break;
126 } 129 }