blob: f2d1c7e247f1c75dc227e4da278a4c308f78c4a2 [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
Václav Kubernáteeb38842019-03-20 19:46:05 +010029struct module_ {
30 bool operator==(const module_& b) const;
Václav Kubernátab612e92019-11-26 19:51:31 +010031 bool operator<(const module_& b) const;
Václav Kubernáteeb38842019-03-20 19:46:05 +010032 std::string m_name;
33};
34
35struct identityRef_ {
36 identityRef_();
37 identityRef_(const std::string& module, const std::string& value);
38 identityRef_(const std::string& value);
39 bool operator==(const identityRef_& b) const;
Václav Kubernátab612e92019-11-26 19:51:31 +010040 bool operator<(const identityRef_& b) const;
Václav Kubernáteeb38842019-03-20 19:46:05 +010041 boost::optional<module_> m_prefix;
42 std::string m_value;
43};
44
Václav Kubernát144729d2020-01-08 15:20:35 +010045enum class SpecialValue {
46 List,
47 Container,
48 PresenceContainer
49};
50
51struct special_ {
52 bool operator==(const special_& b) const;
Václav Kubernátab612e92019-11-26 19:51:31 +010053 bool operator<(const special_& b) const;
Václav Kubernát144729d2020-01-08 15:20:35 +010054 SpecialValue m_value;
55};
56
Václav Kubernát7160a132020-04-03 02:11:01 +020057enum class Datastore {
58 Running,
59 Startup
60};
61
Václav Kubernát144729d2020-01-08 15:20:35 +010062std::string specialValueToString(const special_& value);
63
Václav Kubernát627f6152018-08-29 13:23:56 +020064using leaf_data_ = boost::variant<enum_,
Václav Kubernátab538992019-03-06 15:30:50 +010065 binary_,
Václav Kubernáteeb38842019-03-20 19:46:05 +010066 identityRef_,
Václav Kubernát144729d2020-01-08 15:20:35 +010067 special_,
Václav Kubernát627f6152018-08-29 13:23:56 +020068 double,
69 bool,
Ivona Oboňová88c78ca2019-07-02 18:40:07 +020070 int8_t,
71 uint8_t,
72 int16_t,
73 uint16_t,
Václav Kubernát627f6152018-08-29 13:23:56 +020074 int32_t,
75 uint32_t,
Ivona Oboňová88c78ca2019-07-02 18:40:07 +020076 int64_t,
77 uint64_t,
Václav Kubernát627f6152018-08-29 13:23:56 +020078 std::string>;