diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/include/Poco/Dynamic/Struct.h | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/Dynamic/Struct.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/Dynamic/Struct.h | 1134 |
1 files changed, 567 insertions, 567 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/Dynamic/Struct.h b/contrib/libs/poco/Foundation/include/Poco/Dynamic/Struct.h index fc9d57d55e..6cd3e3cd65 100644 --- a/contrib/libs/poco/Foundation/include/Poco/Dynamic/Struct.h +++ b/contrib/libs/poco/Foundation/include/Poco/Dynamic/Struct.h @@ -1,567 +1,567 @@ -// -// Struct.h -// -// Library: Foundation -// Package: Dynamic -// Module: Struct -// -// Definition of the Struct class. -// -// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_Struct_INCLUDED -#define Foundation_Struct_INCLUDED - - -#include "Poco/Foundation.h" -#include "Poco/Dynamic/Var.h" -#include "Poco/Dynamic/VarHolder.h" -#include "Poco/SharedPtr.h" -#include <map> -#include <set> - - -namespace Poco { -namespace Dynamic { - - -template <typename K> -class Struct - /// Struct allows to define a named collection of Var objects. -{ -public: - typedef typename std::map<K, Var> Data; - typedef typename std::set<K> NameSet; - typedef typename Data::iterator Iterator; - typedef typename Data::const_iterator ConstIterator; - typedef typename Struct<K>::Data::value_type ValueType; - typedef typename Struct<K>::Data::size_type SizeType; - typedef typename std::pair<typename Struct<K>::Iterator, bool> InsRetVal; - typedef typename Poco::SharedPtr<Struct<K> > Ptr; - - Struct(): _data() - /// Creates an empty Struct - { - } - - Struct(const Data& val): _data(val) - /// Creates the Struct from the given value. - { - } - - template <typename T> - Struct(const std::map<K, T>& val) - { - typedef typename std::map<K, T>::const_iterator MapConstIterator; - - MapConstIterator it = val.begin(); - MapConstIterator itEnd = val.end(); - for (; it != itEnd; ++it) _data.insert(ValueType(it->first, Var(it->second))); - } - - virtual ~Struct() - /// Destroys the Struct. - { - } - - inline Var& operator [] (const K& name) - /// Returns the Var with the given name, creates an entry if not found. - { - return _data[name]; - } - - const Var& operator [] (const K& name) const - /// Returns the Var with the given name, throws a - /// NotFoundException if the data member is not found. - { - ConstIterator it = find(name); - if (it == end()) throw NotFoundException(name); - return it->second; - } - - inline bool contains(const K& name) const - /// Returns true if the Struct contains a member with the given name - { - return find(name) != end(); - } - - inline Iterator find(const K& name) - /// Returns an iterator, pointing to the <name,Var> pair containing - /// the element, or it returns end() if the member was not found - { - return _data.find(name); - } - - inline ConstIterator find(const K& name) const - /// Returns a const iterator, pointing to the <name,Var> pair containing - /// the element, or it returns end() if the member was not found - { - return _data.find(name); - } - - inline Iterator end() - /// Returns the end iterator for the Struct - { - return _data.end(); - } - - inline ConstIterator end() const - /// Returns the end const iterator for the Struct - { - return _data.end(); - } - - inline Iterator begin() - /// Returns the begin iterator for the Struct - { - return _data.begin(); - } - - inline ConstIterator begin() const - /// Returns the begin const iterator for the Struct - { - return _data.begin(); - } - - template <typename T> - inline InsRetVal insert(const K& key, const T& value) - /// Inserts a <name, Var> pair into the Struct, - /// returns a pair containing the iterator and a boolean which - /// indicates success or not (is true, when insert succeeded, false, - /// when already another element was present, in this case Iterator - /// points to that other element) - { - // fix: SunPro C++ is silly ... - ValueType valueType(key, value); - return insert(valueType); - } - - inline InsRetVal insert(const ValueType& aPair) - /// Inserts a <name, Var> pair into the Struct, - /// returns a pair containing the iterator and a boolean which - /// indicates success or not (is true, when insert succeeded, false, - /// when already another element was present, in this case Iterator - /// points to that other element) - { - return _data.insert(aPair); - } - - inline SizeType erase(const K& key) - /// Erases the element if found, returns number of elements deleted - { - return _data.erase(key); - } - - inline void erase(Iterator& it) - /// Erases the element at the given position - { - _data.erase(it); - } - - inline bool empty() const - /// Returns true if the Struct doesn't contain any members - { - return _data.empty(); - } - - inline void clear() - /// Clears the Struct contents - { - _data.clear(); - } - - SizeType size() const - /// Returns the number of members the Struct contains - { - return _data.size(); - } - - inline NameSet members() const - /// Returns a sorted collection containing all member names - { - NameSet keys; - ConstIterator it = begin(); - ConstIterator itEnd = end(); - for (; it != itEnd; ++it) keys.insert(it->first); - return keys; - } - - std::string toString() - { - std::string str; - Var(*this).convert<std::string>(str); - return str; - } - -private: - Data _data; -}; - - -template <> -class VarHolderImpl<Struct<std::string> >: public VarHolder -{ -public: - VarHolderImpl(const Struct<std::string>& val): _val(val) - { - } - - ~VarHolderImpl() - { - } - - const std::type_info& type() const - { - return typeid(Struct<std::string>); - } - - void convert(Int8&) const - { - throw BadCastException("Cannot cast Struct type to Int8"); - } - - void convert(Int16&) const - { - throw BadCastException("Cannot cast Struct type to Int16"); - } - - void convert(Int32&) const - { - throw BadCastException("Cannot cast Struct type to Int32"); - } - - void convert(Int64&) const - { - throw BadCastException("Cannot cast Struct type to Int64"); - } - - void convert(UInt8&) const - { - throw BadCastException("Cannot cast Struct type to UInt8"); - } - - void convert(UInt16&) const - { - throw BadCastException("Cannot cast Struct type to UInt16"); - } - - void convert(UInt32&) const - { - throw BadCastException("Cannot cast Struct type to UInt32"); - } - - void convert(UInt64&) const - { - throw BadCastException("Cannot cast Struct type to UInt64"); - } - - void convert(bool&) const - { - throw BadCastException("Cannot cast Struct type to bool"); - } - - void convert(float&) const - { - throw BadCastException("Cannot cast Struct type to float"); - } - - void convert(double&) const - { - throw BadCastException("Cannot cast Struct type to double"); - } - - void convert(char&) const - { - throw BadCastException("Cannot cast Struct type to char"); - } - - void convert(std::string& val) const - { - val.append("{ "); - Struct<std::string>::ConstIterator it = _val.begin(); - Struct<std::string>::ConstIterator itEnd = _val.end(); - if (!_val.empty()) - { - Var key(it->first); - Impl::appendJSONKey(val, key); - val.append(" : "); - Impl::appendJSONValue(val, it->second); - ++it; - } - for (; it != itEnd; ++it) - { - val.append(", "); - Var key(it->first); - Impl::appendJSONKey(val, key); - val.append(" : "); - Impl::appendJSONValue(val, it->second); - } - val.append(" }"); - } - - void convert(Poco::DateTime&) const - { - throw BadCastException("Struct -> Poco::DateTime"); - } - - void convert(Poco::LocalDateTime&) const - { - throw BadCastException("Struct -> Poco::LocalDateTime"); - } - - void convert(Poco::Timestamp&) const - { - throw BadCastException("Struct -> Poco::Timestamp"); - } - - VarHolder* clone(Placeholder<VarHolder>* pVarHolder = 0) const - { - return cloneHolder(pVarHolder, _val); - } - - const Struct<std::string>& value() const - { - return _val; - } - - bool isArray() const - { - return false; - } - - bool isStruct() const - { - return true; - } - - bool isInteger() const - { - return false; - } - - bool isSigned() const - { - return false; - } - - bool isNumeric() const - { - return false; - } - - bool isString() const - { - return false; - } - - std::size_t size() const - { - return _val.size(); - } - - Var& operator [] (const std::string& name) - { - return _val[name]; - } - - const Var& operator [] (const std::string& name) const - { - return _val[name]; - } - -private: - Struct<std::string> _val; -}; - - -template <> -class VarHolderImpl<Struct<int> >: public VarHolder -{ -public: - VarHolderImpl(const Struct<int>& val): _val(val) - { - } - - ~VarHolderImpl() - { - } - - const std::type_info& type() const - { - return typeid(Struct<int>); - } - - void convert(Int8&) const - { - throw BadCastException("Cannot cast Struct type to Int8"); - } - - void convert(Int16&) const - { - throw BadCastException("Cannot cast Struct type to Int16"); - } - - void convert(Int32&) const - { - throw BadCastException("Cannot cast Struct type to Int32"); - } - - void convert(Int64&) const - { - throw BadCastException("Cannot cast Struct type to Int64"); - } - - void convert(UInt8&) const - { - throw BadCastException("Cannot cast Struct type to UInt8"); - } - - void convert(UInt16&) const - { - throw BadCastException("Cannot cast Struct type to UInt16"); - } - - void convert(UInt32&) const - { - throw BadCastException("Cannot cast Struct type to UInt32"); - } - - void convert(UInt64&) const - { - throw BadCastException("Cannot cast Struct type to UInt64"); - } - - void convert(bool&) const - { - throw BadCastException("Cannot cast Struct type to bool"); - } - - void convert(float&) const - { - throw BadCastException("Cannot cast Struct type to float"); - } - - void convert(double&) const - { - throw BadCastException("Cannot cast Struct type to double"); - } - - void convert(char&) const - { - throw BadCastException("Cannot cast Struct type to char"); - } - - void convert(std::string& val) const - { - val.append("{ "); - Struct<int>::ConstIterator it = _val.begin(); - Struct<int>::ConstIterator itEnd = _val.end(); - if (!_val.empty()) - { - Var key(it->first); - Impl::appendJSONKey(val, key); - val.append(" : "); - Impl::appendJSONValue(val, it->second); - ++it; - } - for (; it != itEnd; ++it) - { - val.append(", "); - Var key(it->first); - Impl::appendJSONKey(val, key); - val.append(" : "); - Impl::appendJSONValue(val, it->second); - } - val.append(" }"); - } - - void convert(Poco::DateTime&) const - { - throw BadCastException("Struct -> Poco::DateTime"); - } - - void convert(Poco::LocalDateTime&) const - { - throw BadCastException("Struct -> Poco::LocalDateTime"); - } - - void convert(Poco::Timestamp&) const - { - throw BadCastException("Struct -> Poco::Timestamp"); - } - - VarHolder* clone(Placeholder<VarHolder>* pVarHolder = 0) const - { - return cloneHolder(pVarHolder, _val); - } - - const Struct<int>& value() const - { - return _val; - } - - bool isArray() const - { - return false; - } - - bool isStruct() const - { - return true; - } - - bool isInteger() const - { - return false; - } - - bool isSigned() const - { - return false; - } - - bool isNumeric() const - { - return false; - } - - bool isString() const - { - return false; - } - - std::size_t size() const - { - return _val.size(); - } - - Var& operator [] (int name) - { - return _val[name]; - } - - const Var& operator [] (int name) const - { - return _val[name]; - } - -private: - Struct<int> _val; -}; - - -} // namespace Dynamic - - -typedef Dynamic::Struct<std::string> DynamicStruct; - - -} // namespace Poco - - -#endif // Foundation_Struct_INCLUDED +// +// Struct.h +// +// Library: Foundation +// Package: Dynamic +// Module: Struct +// +// Definition of the Struct class. +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Struct_INCLUDED +#define Foundation_Struct_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Dynamic/Var.h" +#include "Poco/Dynamic/VarHolder.h" +#include "Poco/SharedPtr.h" +#include <map> +#include <set> + + +namespace Poco { +namespace Dynamic { + + +template <typename K> +class Struct + /// Struct allows to define a named collection of Var objects. +{ +public: + typedef typename std::map<K, Var> Data; + typedef typename std::set<K> NameSet; + typedef typename Data::iterator Iterator; + typedef typename Data::const_iterator ConstIterator; + typedef typename Struct<K>::Data::value_type ValueType; + typedef typename Struct<K>::Data::size_type SizeType; + typedef typename std::pair<typename Struct<K>::Iterator, bool> InsRetVal; + typedef typename Poco::SharedPtr<Struct<K> > Ptr; + + Struct(): _data() + /// Creates an empty Struct + { + } + + Struct(const Data& val): _data(val) + /// Creates the Struct from the given value. + { + } + + template <typename T> + Struct(const std::map<K, T>& val) + { + typedef typename std::map<K, T>::const_iterator MapConstIterator; + + MapConstIterator it = val.begin(); + MapConstIterator itEnd = val.end(); + for (; it != itEnd; ++it) _data.insert(ValueType(it->first, Var(it->second))); + } + + virtual ~Struct() + /// Destroys the Struct. + { + } + + inline Var& operator [] (const K& name) + /// Returns the Var with the given name, creates an entry if not found. + { + return _data[name]; + } + + const Var& operator [] (const K& name) const + /// Returns the Var with the given name, throws a + /// NotFoundException if the data member is not found. + { + ConstIterator it = find(name); + if (it == end()) throw NotFoundException(name); + return it->second; + } + + inline bool contains(const K& name) const + /// Returns true if the Struct contains a member with the given name + { + return find(name) != end(); + } + + inline Iterator find(const K& name) + /// Returns an iterator, pointing to the <name,Var> pair containing + /// the element, or it returns end() if the member was not found + { + return _data.find(name); + } + + inline ConstIterator find(const K& name) const + /// Returns a const iterator, pointing to the <name,Var> pair containing + /// the element, or it returns end() if the member was not found + { + return _data.find(name); + } + + inline Iterator end() + /// Returns the end iterator for the Struct + { + return _data.end(); + } + + inline ConstIterator end() const + /// Returns the end const iterator for the Struct + { + return _data.end(); + } + + inline Iterator begin() + /// Returns the begin iterator for the Struct + { + return _data.begin(); + } + + inline ConstIterator begin() const + /// Returns the begin const iterator for the Struct + { + return _data.begin(); + } + + template <typename T> + inline InsRetVal insert(const K& key, const T& value) + /// Inserts a <name, Var> pair into the Struct, + /// returns a pair containing the iterator and a boolean which + /// indicates success or not (is true, when insert succeeded, false, + /// when already another element was present, in this case Iterator + /// points to that other element) + { + // fix: SunPro C++ is silly ... + ValueType valueType(key, value); + return insert(valueType); + } + + inline InsRetVal insert(const ValueType& aPair) + /// Inserts a <name, Var> pair into the Struct, + /// returns a pair containing the iterator and a boolean which + /// indicates success or not (is true, when insert succeeded, false, + /// when already another element was present, in this case Iterator + /// points to that other element) + { + return _data.insert(aPair); + } + + inline SizeType erase(const K& key) + /// Erases the element if found, returns number of elements deleted + { + return _data.erase(key); + } + + inline void erase(Iterator& it) + /// Erases the element at the given position + { + _data.erase(it); + } + + inline bool empty() const + /// Returns true if the Struct doesn't contain any members + { + return _data.empty(); + } + + inline void clear() + /// Clears the Struct contents + { + _data.clear(); + } + + SizeType size() const + /// Returns the number of members the Struct contains + { + return _data.size(); + } + + inline NameSet members() const + /// Returns a sorted collection containing all member names + { + NameSet keys; + ConstIterator it = begin(); + ConstIterator itEnd = end(); + for (; it != itEnd; ++it) keys.insert(it->first); + return keys; + } + + std::string toString() + { + std::string str; + Var(*this).convert<std::string>(str); + return str; + } + +private: + Data _data; +}; + + +template <> +class VarHolderImpl<Struct<std::string> >: public VarHolder +{ +public: + VarHolderImpl(const Struct<std::string>& val): _val(val) + { + } + + ~VarHolderImpl() + { + } + + const std::type_info& type() const + { + return typeid(Struct<std::string>); + } + + void convert(Int8&) const + { + throw BadCastException("Cannot cast Struct type to Int8"); + } + + void convert(Int16&) const + { + throw BadCastException("Cannot cast Struct type to Int16"); + } + + void convert(Int32&) const + { + throw BadCastException("Cannot cast Struct type to Int32"); + } + + void convert(Int64&) const + { + throw BadCastException("Cannot cast Struct type to Int64"); + } + + void convert(UInt8&) const + { + throw BadCastException("Cannot cast Struct type to UInt8"); + } + + void convert(UInt16&) const + { + throw BadCastException("Cannot cast Struct type to UInt16"); + } + + void convert(UInt32&) const + { + throw BadCastException("Cannot cast Struct type to UInt32"); + } + + void convert(UInt64&) const + { + throw BadCastException("Cannot cast Struct type to UInt64"); + } + + void convert(bool&) const + { + throw BadCastException("Cannot cast Struct type to bool"); + } + + void convert(float&) const + { + throw BadCastException("Cannot cast Struct type to float"); + } + + void convert(double&) const + { + throw BadCastException("Cannot cast Struct type to double"); + } + + void convert(char&) const + { + throw BadCastException("Cannot cast Struct type to char"); + } + + void convert(std::string& val) const + { + val.append("{ "); + Struct<std::string>::ConstIterator it = _val.begin(); + Struct<std::string>::ConstIterator itEnd = _val.end(); + if (!_val.empty()) + { + Var key(it->first); + Impl::appendJSONKey(val, key); + val.append(" : "); + Impl::appendJSONValue(val, it->second); + ++it; + } + for (; it != itEnd; ++it) + { + val.append(", "); + Var key(it->first); + Impl::appendJSONKey(val, key); + val.append(" : "); + Impl::appendJSONValue(val, it->second); + } + val.append(" }"); + } + + void convert(Poco::DateTime&) const + { + throw BadCastException("Struct -> Poco::DateTime"); + } + + void convert(Poco::LocalDateTime&) const + { + throw BadCastException("Struct -> Poco::LocalDateTime"); + } + + void convert(Poco::Timestamp&) const + { + throw BadCastException("Struct -> Poco::Timestamp"); + } + + VarHolder* clone(Placeholder<VarHolder>* pVarHolder = 0) const + { + return cloneHolder(pVarHolder, _val); + } + + const Struct<std::string>& value() const + { + return _val; + } + + bool isArray() const + { + return false; + } + + bool isStruct() const + { + return true; + } + + bool isInteger() const + { + return false; + } + + bool isSigned() const + { + return false; + } + + bool isNumeric() const + { + return false; + } + + bool isString() const + { + return false; + } + + std::size_t size() const + { + return _val.size(); + } + + Var& operator [] (const std::string& name) + { + return _val[name]; + } + + const Var& operator [] (const std::string& name) const + { + return _val[name]; + } + +private: + Struct<std::string> _val; +}; + + +template <> +class VarHolderImpl<Struct<int> >: public VarHolder +{ +public: + VarHolderImpl(const Struct<int>& val): _val(val) + { + } + + ~VarHolderImpl() + { + } + + const std::type_info& type() const + { + return typeid(Struct<int>); + } + + void convert(Int8&) const + { + throw BadCastException("Cannot cast Struct type to Int8"); + } + + void convert(Int16&) const + { + throw BadCastException("Cannot cast Struct type to Int16"); + } + + void convert(Int32&) const + { + throw BadCastException("Cannot cast Struct type to Int32"); + } + + void convert(Int64&) const + { + throw BadCastException("Cannot cast Struct type to Int64"); + } + + void convert(UInt8&) const + { + throw BadCastException("Cannot cast Struct type to UInt8"); + } + + void convert(UInt16&) const + { + throw BadCastException("Cannot cast Struct type to UInt16"); + } + + void convert(UInt32&) const + { + throw BadCastException("Cannot cast Struct type to UInt32"); + } + + void convert(UInt64&) const + { + throw BadCastException("Cannot cast Struct type to UInt64"); + } + + void convert(bool&) const + { + throw BadCastException("Cannot cast Struct type to bool"); + } + + void convert(float&) const + { + throw BadCastException("Cannot cast Struct type to float"); + } + + void convert(double&) const + { + throw BadCastException("Cannot cast Struct type to double"); + } + + void convert(char&) const + { + throw BadCastException("Cannot cast Struct type to char"); + } + + void convert(std::string& val) const + { + val.append("{ "); + Struct<int>::ConstIterator it = _val.begin(); + Struct<int>::ConstIterator itEnd = _val.end(); + if (!_val.empty()) + { + Var key(it->first); + Impl::appendJSONKey(val, key); + val.append(" : "); + Impl::appendJSONValue(val, it->second); + ++it; + } + for (; it != itEnd; ++it) + { + val.append(", "); + Var key(it->first); + Impl::appendJSONKey(val, key); + val.append(" : "); + Impl::appendJSONValue(val, it->second); + } + val.append(" }"); + } + + void convert(Poco::DateTime&) const + { + throw BadCastException("Struct -> Poco::DateTime"); + } + + void convert(Poco::LocalDateTime&) const + { + throw BadCastException("Struct -> Poco::LocalDateTime"); + } + + void convert(Poco::Timestamp&) const + { + throw BadCastException("Struct -> Poco::Timestamp"); + } + + VarHolder* clone(Placeholder<VarHolder>* pVarHolder = 0) const + { + return cloneHolder(pVarHolder, _val); + } + + const Struct<int>& value() const + { + return _val; + } + + bool isArray() const + { + return false; + } + + bool isStruct() const + { + return true; + } + + bool isInteger() const + { + return false; + } + + bool isSigned() const + { + return false; + } + + bool isNumeric() const + { + return false; + } + + bool isString() const + { + return false; + } + + std::size_t size() const + { + return _val.size(); + } + + Var& operator [] (int name) + { + return _val[name]; + } + + const Var& operator [] (int name) const + { + return _val[name]; + } + +private: + Struct<int> _val; +}; + + +} // namespace Dynamic + + +typedef Dynamic::Struct<std::string> DynamicStruct; + + +} // namespace Poco + + +#endif // Foundation_Struct_INCLUDED |