9#ifndef ZYPP_CORE_PARSER_JSON_JSON_VALUE_DEFINED 
   10#define ZYPP_CORE_PARSER_JSON_JSON_VALUE_DEFINED 
   43    template <
class Iterator>
 
   56    Array( std::initializer_list<Value> contents_r );
 
   62    void add( 
const std::initializer_list<Value> & contents_r );
 
   73    std::ostream & 
dumpOn( std::ostream & 
str ) 
const;
 
 
  102    using iterator = std::multimap<String, Value>::iterator;
 
  104    using size_type = std::multimap<String, Value>::size_type;
 
  109    template <
class Iterator>
 
  114    Object( 
const std::initializer_list<std::pair<String, Value>> & contents_r );
 
  116    template <
typename K, 
typename V>
 
  119    template <
typename K, 
typename V>
 
  126    void add(std::initializer_list<std::pair<String, Value> > contents_r );
 
  129    std::string 
asJSON() 
const;
 
  132    std::ostream & 
dumpOn( std::ostream & 
str ) 
const;
 
  147      return _values.equal_range (key);
 
 
  151      return _values.equal_range (key);
 
 
  160    std::ostream & 
dumpOn( std::ostream & 
str, std::map<String, Value>::const_iterator val_r ) 
const;
 
 
  239    std::string 
asJSON() 
const;
 
  242      return std::get<Null>( 
_value );
 
 
  246      return std::get<Bool>( 
_value );
 
 
  250      return std::get<String>( 
_value );
 
 
  254      return std::get<Int>( 
_value );
 
 
  258      return std::get<UInt>( 
_value );
 
 
  262      return std::get<Number>( 
_value );
 
 
  266      return std::get<Object>( 
_value );
 
 
  270      return std::get<Array>( 
_value );
 
 
  278      return std::holds_alternative<Null>(
_value);
 
 
  282      return std::visit([](
const auto &t) {
 
  284        if constexpr ( std::is_same_v<_Type, Bool> ) {
 
  286        } 
else if constexpr ( std::is_same_v<_Type, String> ) {
 
  288        } 
else if constexpr ( std::is_same_v<_Type, Int> ) {
 
  290        } 
else if constexpr ( std::is_same_v<_Type, UInt> ) {
 
  292        } 
else if constexpr ( std::is_same_v<_Type, Number> ) {
 
  294        } 
else if constexpr ( std::is_same_v<_Type, Object> ) {
 
  296        } 
else if constexpr ( std::is_same_v<_Type, Array> ) {
 
 
  307    using JsonValueData = std::variant<Null, Bool, String, Int, UInt, Number, Object, Array>;
 
 
  311  template<
class Iterator>
 
  314    std::for_each( 
begin, 
end, [
this]( 
const auto &v) { this->
add(v); } );
 
 
  321  template <
typename T>
 
  323    return Value( std::forward<T>(v) );
 
 
std::ostream & dumpOn(std::ostream &str) const
Stream output.
Array(const std::list< V > &cont_r)
std::vector< Value > _values
std::string asJSON() const
JSON representation.
std::ostream & operator<<(std::ostream &str, const Array &obj)
Stream output.
const Value & operator[](size_type n) const
std::string asString() const
String representation.
Value & operator[](size_type n)
const_iterator begin() const
const_iterator end() const
Array(const std::set< V > &cont_r)
Array(const std::vector< V > &cont_r)
void add(Value val_r)
Push JSON Value to Array.
std::vector< Value >::const_iterator const_iterator
bool operator==(const Array &other) const
std::vector< Value >::size_type size_type
std::vector< Value >::iterator iterator
Object(Iterator begin, Iterator end)
Construct from map-iterator.
const_iterator end() const
std::multimap< String, Value >::size_type size_type
std::multimap< String, Value >::iterator iterator
const_iterator begin() const
std::string asJSON() const
JSON representation.
std::ostream & dumpOn(std::ostream &str) const
Stream output.
const Value & value(const String &key) const
std::pair< const_iterator, const_iterator > equal_range(const String &key) const
bool contains(const String &key) const
Object(std::map< K, V > values)
std::ostream & operator<<(std::ostream &str, const Object &obj)
Stream output.
Object(std::multimap< K, V > values)
std::vector< Value > values(const String &key) const
std::multimap< String, Value > _values
std::pair< iterator, iterator > equal_range(const String &key)
std::multimap< String, Value >::const_iterator const_iterator
void add(String key_r, Value val_r)
Add key/value pair.
bool operator==(const Object &other) const
const UInt & asUInt() const
Value(std::uint64_t val_r)
const String & asString() const
Value(std::uint32_t val_r)
const Bool & asBool() const
bool operator==(const Value &other) const
Value(std::int16_t val_r)
std::ostream & dumpOn(std::ostream &str) const
Stream output.
std::ostream & operator<<(std::ostream &str, const Value &obj)
Stream output.
Value(std::int64_t val_r)
Value & operator=(Value &&)=default
Value(std::int32_t val_r)
Value(const Value &)=default
const Array & asArray() const
const Null & asNull() const
Value(std::uint16_t val_r)
std::variant< Null, Bool, String, Int, UInt, Number, Object, Array > JsonValueData
std::string asJSON() const
JSON representation.
Value & operator=(const Value &)=default
Value(std::uint8_t val_r)
const Number & asNumber() const
const Object & asObject() const
const Int & asInt() const
typename decay< T >::type decay_t
String related utilities and Regular expression matching.
json::Value toJSON(const sat::Transaction::Step &step_r)
See commitbegin on page plugin-commit for the specs.
Convenient building of std::string via std::ostringstream Basically a std::ostringstream autoconverti...
#define for_(IT, BEG, END)
Convenient for-loops using iterator.