blob: c1d8f63067dd2050dfde9d01f340224e16a68d49 [file] [log] [blame]
Václav Kubernát627f6152018-08-29 13:23:56 +02001/*
2 * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
3 * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
4 *
5 * Written by Václav Kubernát <kubervac@fit.cvut.cz>
6 *
7*/
8#pragma once
9
Václav Kubernáteeb38842019-03-20 19:46:05 +010010#include <boost/optional.hpp>
Václav Kubernát627f6152018-08-29 13:23:56 +020011#include <boost/variant.hpp>
12
13struct enum_ {
14 enum_();
15 enum_(const std::string& value);
16 bool operator==(const enum_& b) const;
Václav Kubernátab612e92019-11-26 19:51:31 +010017 bool operator<(const enum_& b) const;
Václav Kubernát627f6152018-08-29 13:23:56 +020018 std::string m_value;
19};
20
Václav Kubernátab538992019-03-06 15:30:50 +010021struct binary_ {
22 binary_();
23 binary_(const std::string& value);
24 bool operator==(const binary_& b) const;
Václav Kubernátab612e92019-11-26 19:51:31 +010025 bool operator<(const binary_& b) const;
Václav Kubernátab538992019-03-06 15:30:50 +010026 std::string m_value;
27};
28
Jan Kundrát379bb572020-05-07 03:23:13 +020029struct empty_ {
30 empty_();
31 bool operator==(const empty_) const;
32 bool operator<(const empty_) const;
33};
34
Václav Kubernáteeb38842019-03-20 19:46:05 +010035struct module_ {
36 bool operator==(const module_& b) const;
Václav Kubernátab612e92019-11-26 19:51:31 +010037 bool operator<(const module_& b) const;
Václav Kubernáteeb38842019-03-20 19:46:05 +010038 std::string m_name;
39};
40
41struct identityRef_ {
42 identityRef_();
43 identityRef_(const std::string& module, const std::string& value);
44 identityRef_(const std::string& value);
45 bool operator==(const identityRef_& b) const;
Václav Kubernátab612e92019-11-26 19:51:31 +010046 bool operator<(const identityRef_& b) const;
Václav Kubernáteeb38842019-03-20 19:46:05 +010047 boost::optional<module_> m_prefix;
48 std::string m_value;
49};
50
Václav Kubernát144729d2020-01-08 15:20:35 +010051enum class SpecialValue {
52 List,
Václav Kubernát5b8a8f32020-05-20 00:57:22 +020053 LeafList,
Václav Kubernát144729d2020-01-08 15:20:35 +010054 Container,
55 PresenceContainer
56};
57
58struct special_ {
59 bool operator==(const special_& b) const;
Václav Kubernátab612e92019-11-26 19:51:31 +010060 bool operator<(const special_& b) const;
Václav Kubernát144729d2020-01-08 15:20:35 +010061 SpecialValue m_value;
62};
63
Václav Kubernát7160a132020-04-03 02:11:01 +020064enum class Datastore {
65 Running,
66 Startup
67};
68
Václav Kubernát144729d2020-01-08 15:20:35 +010069std::string specialValueToString(const special_& value);
70
Václav Kubernát627f6152018-08-29 13:23:56 +020071using leaf_data_ = boost::variant<enum_,
Václav Kubernátab538992019-03-06 15:30:50 +010072 binary_,
Jan Kundrát379bb572020-05-07 03:23:13 +020073 empty_,
Václav Kubernáteeb38842019-03-20 19:46:05 +010074 identityRef_,
Václav Kubernát144729d2020-01-08 15:20:35 +010075 special_,
Václav Kubernát627f6152018-08-29 13:23:56 +020076 double,
77 bool,
Ivona Oboňová88c78ca2019-07-02 18:40:07 +020078 int8_t,
79 uint8_t,
80 int16_t,
81 uint16_t,
Václav Kubernát627f6152018-08-29 13:23:56 +020082 int32_t,
83 uint32_t,
Ivona Oboňová88c78ca2019-07-02 18:40:07 +020084 int64_t,
85 uint64_t,
Václav Kubernát627f6152018-08-29 13:23:56 +020086 std::string>;