blob: b79ac8452c013b96e732543dc2c4c28f8ea72a23 [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
57std::string specialValueToString(const special_& value);
58
Václav Kubernát627f6152018-08-29 13:23:56 +020059using leaf_data_ = boost::variant<enum_,
Václav Kubernátab538992019-03-06 15:30:50 +010060 binary_,
Václav Kubernáteeb38842019-03-20 19:46:05 +010061 identityRef_,
Václav Kubernát144729d2020-01-08 15:20:35 +010062 special_,
Václav Kubernát627f6152018-08-29 13:23:56 +020063 double,
64 bool,
Ivona Oboňová88c78ca2019-07-02 18:40:07 +020065 int8_t,
66 uint8_t,
67 int16_t,
68 uint16_t,
Václav Kubernát627f6152018-08-29 13:23:56 +020069 int32_t,
70 uint32_t,
Ivona Oboňová88c78ca2019-07-02 18:40:07 +020071 int64_t,
72 uint64_t,
Václav Kubernát627f6152018-08-29 13:23:56 +020073 std::string>;