13#include <boost/algorithm/string/classification.hpp>
14#include <boost/algorithm/string/constants.hpp>
15#include <boost/algorithm/string/split.hpp>
20using namespace isc::data;
24 std::vector<std::string> split_text;
25 boost::split(split_text, class_names, boost::is_any_of(
","),
26 boost::algorithm::token_compress_off);
27 for (
size_t i = 0; i < split_text.size(); ++i) {
30 if (!trimmed.empty()) {
37 for (
auto const& cclass : other) {
45 auto it = idx.find(class_name);
46 if (it != idx.end()) {
47 static_cast<void>(idx.erase(it));
54 return (idx.count(x) != 0);
60 for (
const auto& cclass : *
this) {
66 for (
const auto& cclass : cclasses) {
80 for (
auto const& class_it : *
this) {
94 for (
auto const& c : container_) {
108 for (
unsigned i = 0; i < cc_list->size(); ++i) {
109 auto cclass = cc_list->get(i);
114 static_cast<void>(
insert(cclass->stringValue()));
127 for (
auto const& cclass : other) {
140 boost::hash<std::string> hasher;
141 return (hasher(client_classes.
toText(
"+")));
145 false,
false,
false,
false,
false,
false,
false,
false,
146 false,
false,
false,
false,
false,
false,
false,
false,
147 false,
false,
false,
false,
false,
false,
false,
false,
148 false,
false,
false,
false,
false,
false,
false,
false,
149 false,
true,
false,
true,
true,
true,
true,
false,
150 false,
false,
true,
true,
false,
true,
true,
true,
151 true,
true,
true,
true,
true,
true,
true,
true,
152 true,
true,
true,
false,
false,
false,
false,
true,
153 true,
true,
true,
true,
true,
true,
true,
true,
154 true,
true,
true,
true,
true,
true,
true,
true,
155 true,
true,
true,
true,
true,
true,
true,
true,
156 true,
true,
true,
false,
false,
false,
true,
true,
157 false,
true,
true,
true,
true,
true,
true,
true,
158 true,
true,
true,
true,
true,
true,
true,
true,
159 true,
true,
true,
true,
true,
true,
true,
true,
160 true,
true,
true,
false,
true,
false,
true,
false,
166 for (
char const& c : name) {
167 uint8_t u =
static_cast<uint8_t
>(c);
Defines elements for storing the names of client classes.
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
static ElementPtr create(const Position &pos=ZERO_POSITION())
Create a NullElement.
static ElementPtr createList(const Position &pos=ZERO_POSITION())
Creates an empty ListElement type ElementPtr.
Container for storing client class names.
bool equals(const ClientClasses &other) const
Compares two ClientClasses container for equality.
void clear()
Clears containers.
static const std::vector< bool > CLIENT_CLASS_VALID_CHARACTERS
Valid character in a client class name boolean vector.
bool contains(const ClientClass &x) const
returns if class x belongs to the defined classes
void insert(const ClientClass &class_name)
Insert an element.
static std::string escape(const std::string &name, bool escape_escape=true)
Escape a client class name.
void erase(const ClientClass &class_name)
Erase element by name.
ClientClasses & operator=(const ClientClasses &other)
Assigns the contents of on container to another.
static constexpr char CLIENT_CLASS_ESCAPE
Escape character.
virtual isc::data::ElementPtr toElement() const
Returns all class names as an ElementPtr of type ListElement.
void fromElement(isc::data::ConstElementPtr list)
Sets contents from a ListElement.
bool intersects(const ClientClasses &cclasses) const
returns whether this container has at least one class in common with a given container.
ClientClasses()
Default constructor.
std::string toText(const std::string &separator=", ") const
Returns all class names as text.
const_iterator cbegin() const
Iterators to the first element.
const_iterator cend() const
Iterators to the past the end element.
size_t size() const
Returns the number of classes.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
size_t hash_value(const IOAddress &address)
Hash the IOAddress.
boost::shared_ptr< const Element > ConstElementPtr
boost::shared_ptr< Element > ElementPtr
std::string ClientClass
Defines a single class name.
const std::string & byteToHex(uint8_t byte)
Converts a byte to a two hex digit string.
string trim(const string &input)
Trim leading and trailing spaces.
Defines the logger used by the top-level component of kea-lfc.
size_t operator()(const ClientClasses &client_classes)
A hashing operator.