Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/kyua/utils/config/exceptions.hpp
48081 views
1
// Copyright 2012 The Kyua Authors.
2
// All rights reserved.
3
//
4
// Redistribution and use in source and binary forms, with or without
5
// modification, are permitted provided that the following conditions are
6
// met:
7
//
8
// * Redistributions of source code must retain the above copyright
9
// notice, this list of conditions and the following disclaimer.
10
// * Redistributions in binary form must reproduce the above copyright
11
// notice, this list of conditions and the following disclaimer in the
12
// documentation and/or other materials provided with the distribution.
13
// * Neither the name of Google Inc. nor the names of its contributors
14
// may be used to endorse or promote products derived from this software
15
// without specific prior written permission.
16
//
17
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29
/// \file utils/config/exceptions.hpp
30
/// Exception types raised by the config module.
31
32
#if !defined(UTILS_CONFIG_EXCEPTIONS_HPP)
33
#define UTILS_CONFIG_EXCEPTIONS_HPP
34
35
#include <stdexcept>
36
37
#include "utils/config/keys_fwd.hpp"
38
#include "utils/config/tree_fwd.hpp"
39
40
namespace utils {
41
namespace config {
42
43
44
/// Base exceptions for config errors.
45
class error : public std::runtime_error {
46
public:
47
explicit error(const std::string&);
48
~error(void) throw();
49
};
50
51
52
/// Exception denoting that two trees cannot be combined.
53
class bad_combination_error : public error {
54
public:
55
explicit bad_combination_error(const detail::tree_key&,
56
const std::string&);
57
~bad_combination_error(void) throw();
58
};
59
60
61
/// Exception denoting that a key was not found within a tree.
62
class invalid_key_error : public error {
63
public:
64
explicit invalid_key_error(const std::string&);
65
~invalid_key_error(void) throw();
66
};
67
68
69
/// Exception denoting that a key was given an invalid value.
70
class invalid_key_value : public error {
71
public:
72
explicit invalid_key_value(const detail::tree_key&, const std::string&);
73
~invalid_key_value(void) throw();
74
};
75
76
77
/// Exception denoting that a configuration file is invalid.
78
class syntax_error : public error {
79
public:
80
explicit syntax_error(const std::string&);
81
~syntax_error(void) throw();
82
};
83
84
85
/// Exception denoting that a key was not found within a tree.
86
class unknown_key_error : public error {
87
public:
88
explicit unknown_key_error(const detail::tree_key&,
89
const std::string& = "");
90
~unknown_key_error(void) throw();
91
};
92
93
94
/// Exception denoting that a value was invalid.
95
class value_error : public error {
96
public:
97
explicit value_error(const std::string&);
98
~value_error(void) throw();
99
};
100
101
102
} // namespace config
103
} // namespace utils
104
105
106
#endif // !defined(UTILS_CONFIG_EXCEPTIONS_HPP)
107
108