59 #include <type_traits> 63 #include <boost/operators.hpp> 79 struct dynamic :
private boost::operators<dynamic> {
89 template <
class T,
class Enable =
void>
102 typedef std::vector<dynamic>
Array;
113 std::is_same<std::vector<bool>::const_reference,
bool>
::value,
115 std::vector<bool>::const_reference>;
154 template <
class...
Args>
195 dynamic(std::vector<bool>::reference val);
202 template <
class Iterator>
262 friend std::ostream&
operator<<(std::ostream&, dynamic
const&);
328 const char*
data()
const&;
329 const char*
data() && =
delete;
330 const char*
c_str()
const&;
331 const char*
c_str() && =
delete;
345 std::size_t
size()
const;
351 const_iterator
begin()
const;
352 const_iterator
end()
const;
367 template <
typename K,
typename T>
391 template <
typename K>
393 template <
typename K>
403 template <
typename K>
420 template <typename K>
422 template <typename K>
424 template <typename K>
429 dynamic&&
at(StringPiece) &&;
456 template <typename K>
458 template <typename K>
460 template <typename K>
463 const dynamic*
get_ptr(StringPiece) const&;
464 dynamic*
get_ptr(StringPiece) &;
465 dynamic*
get_ptr(StringPiece) && = delete;
481 template <typename K>
483 template <typename K>
485 template <typename K>
488 dynamic& operator[](StringPiece) &;
489 dynamic const& operator[](StringPiece) const&;
490 dynamic&& operator[](StringPiece) &&;
500 template <typename K>
503 const dynamic&
v = dynamic::
object) const&;
504 template <typename K>
507 template <typename K>
510 const dynamic&
v = dynamic::
object) &&;
511 template <typename K>
514 dynamic
getDefault(StringPiece k, const dynamic& v = dynamic::
object) const&;
515 dynamic
getDefault(StringPiece k, dynamic&& v) const&;
516 dynamic
getDefault(StringPiece k, const dynamic& v = dynamic::
object) &&;
517 dynamic
getDefault(StringPiece k, dynamic&& v) &&;
519 template <typename K, typename V>
521 template <typename V>
527 template <typename K>
529 template <typename K>
532 const dynamic& v = dynamic::
object);
534 dynamic&
setDefault(StringPiece k, dynamic&& v);
535 dynamic&
setDefault(StringPiece k, const dynamic& v = dynamic::
object);
546 void resize(
std::
size_t n, dynamic const& =
nullptr);
555 template <class K, class V>
556 void insert(K&&, V&& val);
571 void update(const dynamic& mergeObj);
573 static dynamic
merge(const dynamic& mergeObj1, const dynamic& mergeObj2);
584 static dynamic
merge_diff(const dynamic& source, const dynamic& target);
593 template <typename K>
610 iterator
erase(const_iterator it);
611 iterator
erase(const_iterator first, const_iterator last);
658 explicit dynamic(Array&& array);
661 T const&
get() const;
682 static
char const* typeName(
Type);
690 explicit Data() : nul(nullptr) {}
707 std::aligned_storage<
IterableProxy< const_value_iterator > values() const
const char * data() const &
static ObjectMaker object()
bool operator<(dynamic const &o) const
std::vector< dynamic > Array
StringPiece stringPiece() const
IfIsNonStringDynamicConvertible< K, dynamic > getDefault(K &&k, const dynamic &v=dynamic::object) const &
const char * typeName() const
dynamic const & atImpl(dynamic const &) const &
double getDouble() const &
dynamic & operator/=(dynamic const &)
std::aligned_storage< sizeof(F14NodeMap< int, int >), alignof(F14NodeMap< int, int >)>::type objectBuffer
T * getAddress() noexcept
std::enable_if_t< !std::is_convertible< K, StringPiece >::value &&std::is_convertible< K, dynamic >::value, T > IfIsNonStringDynamicConvertible
IfIsNonStringDynamicConvertible< K, std::size_t > count(K &&) const
const std::string & getString() const &
union folly::dynamic::Data u_
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
—— Concurrent Priority Queue Implementation ——
IfIsNonStringDynamicConvertible< K, dynamic & > setDefault(K &&k, V &&v)
requires E e noexcept(noexcept(s.error(std::move(e))))
dynamic & operator^=(dynamic const &)
static dynamic merge(const dynamic &mergeObj1, const dynamic &mergeObj2)
const dynamic * get_ptrImpl(dynamic const &) const &
static dynamic merge_diff(const dynamic &source, const dynamic &target)
bool operator==(dynamic const &o) const
std::string asString() const
dynamic & operator=(dynamic const &)
void insert(K &&, V &&val)
IfIsNonStringDynamicConvertible< K, const_item_iterator > find(K &&) const
void print_as_pseudo_json(std::ostream &) const
void push_back(dynamic const &)
static const char *const value
IfIsNonStringDynamicConvertible< K, std::size_t > erase(K &&)
dynamic & operator*=(dynamic const &)
IterableProxy< const_key_iterator > keys() const
dynamic & operator+=(dynamic const &)
dynamic & operator-=(dynamic const &)
void update(const dynamic &mergeObj)
IterableProxy< const_item_iterator > items() const
dynamic & operator|=(dynamic const &)
static void array(EmptyArrayTag)
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
bool_constant< false > false_type
IfIsNonStringDynamicConvertible< K, dynamic const & > at(K &&) const &
dynamic & operator%=(dynamic const &)
std::conditional_t< std::is_same< std::vector< bool >::const_reference, bool >::value, VectorBoolConstRefFake, std::vector< bool >::const_reference > VectorBoolConstRefCtorType
dynamic & operator&=(dynamic const &)
friend std::ostream & operator<<(std::ostream &, dynamic const &)
void update_missing(const dynamic &other)
const_iterator begin() const
Array::const_iterator const_iterator
void merge_patch(const dynamic &patch)
void print(std::ostream &) const
void resize(std::size_t n, dynamic const &=nullptr)
T * get_nothrow()&noexcept
const_iterator end() const
const dynamic * get_ptr(json_pointer const &) const &
constexpr detail::First first
const char * c_str() const &