From 9a0859212de4d1304f9392fe910921227421c8c3 Mon Sep 17 00:00:00 2001 From: Patrick Simianer Date: Sat, 16 Aug 2014 21:25:52 +0100 Subject: cleanup --- src/test_msgpack_streaming.cc | 99 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/test_msgpack_streaming.cc (limited to 'src/test_msgpack_streaming.cc') diff --git a/src/test_msgpack_streaming.cc b/src/test_msgpack_streaming.cc new file mode 100644 index 0000000..1a3cf55 --- /dev/null +++ b/src/test_msgpack_streaming.cc @@ -0,0 +1,99 @@ +#include +#include +#include +#include +#include + +using namespace std; + + + +struct Node { + int id; + string cat; + vector span; + + MSGPACK_DEFINE(id, cat, span); +}; + +struct Vector { + double CountEF; + double EgivenFCoherent; + double Glue; + double IsSingletonF; + double IsSingletonFE; + double LanguageModel; + double LanguageModel_OOV; + double MaxLexFgivenE; + double MaxLexEgivenF; + double PassThrough; + double PassThrough_1; + double PassThrough_2; + double PassThrough_3; + double PassThrough_4; + double PassThrough_5; + double PassThrough_6; + double SampleCountF; + double WordPenalty; + + MSGPACK_DEFINE(CountEF, EgivenFCoherent, Glue, IsSingletonF, IsSingletonFE, LanguageModel, LanguageModel_OOV, MaxLexEgivenF, MaxLexFgivenE, PassThrough, PassThrough_1, PassThrough_2, PassThrough_3, PassThrough_4, PassThrough_5, PassThrough_6, SampleCountF, WordPenalty); +}; + +struct Edge { + int head; + string rule; + vector tails; + Vector f; + double weight; + + MSGPACK_DEFINE(head, rule, tails, f, weight); +}; + +struct Hg { + Vector weights; + vector nodes; + vector edges; + + MSGPACK_DEFINE(weights, nodes, edges); +}; + +int +main(int argc, char** argv) { + ifstream ifs(argv[1]); + + size_t count = 0, n_, e_; + msgpack::unpacker pac; + while(true) { + pac.reserve_buffer(32*1024); + size_t bytes = ifs.readsome(pac.buffer(), pac.buffer_capacity()); + pac.buffer_consumed(bytes); + msgpack::unpacked result; + while(pac.next(&result)) { + msgpack::object obj = result.get(); + if (count == 0) { + obj.convert(&n_); + n_ += 2; + } else if (count == 1) { + obj.convert(&e_); + e_ += 2; + } else if (count == 2) { + Vector v; + obj.convert(&v); + } else if (count > 2 && count <= n_) { + Node n; + obj.convert(&n); + } else if (count > n_ && count <= n_+e_+1) { + Edge e; + obj.convert(&e); + string s = e.rule.substr(1, 4); + if (s == "Goal") + cout << s << endl; + } + count++; + } + if (!bytes) break; + } + + return 0; +} + -- cgit v1.2.3