Line data Source code
1 : /**
2 : * @file
3 : *
4 : * @brief
5 : *
6 : * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
7 : */
8 :
9 : #include "printer.hpp"
10 :
11 : #include <key.hpp>
12 : #include <keyset.hpp>
13 :
14 : #include <iostream>
15 : #include <string>
16 :
17 : using namespace std;
18 : using namespace kdb;
19 :
20 : namespace elektra
21 : {
22 :
23 54 : Printer::Printer (KeySet & ks, Key & parentKey) : nr_keys (0), nr_meta (0), current (ks), parent (parentKey)
24 : {
25 18 : }
26 :
27 56 : void Printer::add_key (std::vector<char> const & c)
28 : {
29 392 : std::string s (c.begin (), c.end ());
30 :
31 112 : keyname = s;
32 :
33 168 : Key k (parent.getName (), KEY_END);
34 56 : k.addName (keyname);
35 :
36 112 : current.append (k);
37 :
38 : // cout << "current key is: " << current.current().getName() << endl;
39 :
40 56 : ++nr_keys;
41 : // std::cout << "[" << nr_keys << "] add key " << s << std::endl;
42 56 : }
43 :
44 56 : void Printer::add_val (std::vector<char> const & c)
45 : {
46 392 : std::string s (c.begin (), c.end ());
47 : // std::cout << "[" << nr_keys << "] add val " << s << " to keyname " << keyname << std::endl;
48 :
49 : // cout << "current key is: " << current.current().getName() << endl;
50 :
51 280 : current.current ().setString (s);
52 56 : }
53 :
54 51 : void Printer::add_metakey (std::vector<char> const & c)
55 : {
56 357 : std::string s (c.begin (), c.end ());
57 51 : ++nr_meta;
58 102 : metaname = s;
59 :
60 : // std::cout << "[" << nr_meta << "] add metakey " << s << std::endl;
61 51 : }
62 :
63 51 : void Printer::add_metaval (std::vector<char> const & c)
64 : {
65 357 : std::string s (c.begin (), c.end ());
66 : // std::cout << "[" << nr_meta << "] add metaval " << s << " to metaname " << metaname << std::endl;
67 :
68 204 : current.current ().setMeta<string> (metaname, s);
69 51 : }
70 :
71 92 : } // end namespace elektra
|