同步操作将从 sulayman_tien/poco 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//// Array.cpp//// Library: JSON// Package: JSON// Module: Array//// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.// and Contributors.//// SPDX-License-Identifier: BSL-1.0//#include "Poco/JSON/Array.h"#include "Poco/JSON/Object.h"#include "Poco/JSON/Stringifier.h"#include "Poco/JSONString.h"using Poco::Dynamic::Var;namespace Poco {namespace JSON {Array::Array(int options):_modified(false),_escapeUnicode((options & Poco::JSON_ESCAPE_UNICODE) != 0){}Array::Array(const Array& other) :_values(other._values),_pArray(other._pArray),_modified(other._modified),_escapeUnicode(other._escapeUnicode){}Array::Array(Array&& other) noexcept:_values(std::move(other._values)),_pArray(std::move(other._pArray)),_modified(other._modified),_escapeUnicode(other._escapeUnicode){}Array& Array::operator = (const Array& other){if (&other != this){_values = other._values;_pArray = other._pArray;_modified = other._modified;_escapeUnicode = other._escapeUnicode;}return *this;}Array& Array::operator = (Array&& other) noexcept{_values = std::move(other._values);_pArray = std::move(other._pArray);_modified = other._modified;_escapeUnicode = other._escapeUnicode;return *this;}Array::~Array(){}Var Array::get(unsigned int index) const{Var value;try{value = _values.at(index);}catch (std::out_of_range&){//Ignore, we return an empty value}return value;}Array::Ptr Array::getArray(unsigned int index) const{Array::Ptr result;Var value = get(index);if (value.type() == typeid(Array::Ptr)){result = value.extract<Array::Ptr>();}return result;}Object::Ptr Array::getObject(unsigned int index) const{Object::Ptr result;Var value = get(index);if (value.type() == typeid(Object::Ptr)){result = value.extract<Object::Ptr>();}return result;}bool Array::isNull(unsigned int index) const{if (index < _values.size()){Dynamic::Var value = _values[index];return value.isEmpty();}return true;}bool Array::isObject(unsigned int index) const{Var value = get(index);return isObject(value);}bool Array::isObject(const Dynamic::Var& value) const{return value.type() == typeid(Object::Ptr);}bool Array::isObject(ConstIterator& it) const{return it!= end() && isObject(*it);}void Array::stringify(std::ostream& out, unsigned int indent, int step) const{int options = Poco::JSON_WRAP_STRINGS;options |= _escapeUnicode ? Poco::JSON_ESCAPE_UNICODE : 0;if (step == -1) step = indent;out << "[";if (indent > 0) out << std::endl;for (ValueVec::const_iterator it = _values.begin(); it != _values.end();){for (int i = 0; i < indent; i++) out << ' ';Stringifier::stringify(*it, out, indent + step, step, options);if (++it != _values.end()){out << ",";if (step > 0) out << '\n';}}if (step > 0) out << '\n';if (indent >= step) indent -= step;for (int i = 0; i < indent; i++) out << ' ';out << "]";}void Array::resetDynArray() const{if (!_pArray)_pArray = new Poco::Dynamic::Array;else_pArray->clear();}Array::operator const Poco::Dynamic::Array& () const{if (!_values.size()){resetDynArray();}else if (_modified){ValueVec::const_iterator it = _values.begin();ValueVec::const_iterator end = _values.end();resetDynArray();int index = 0;for (; it != end; ++it, ++index){if (isObject(it)){_pArray->insert(_pArray->end(), Poco::JSON::Object::makeStruct(getObject(index)));}else if (isArray(it)){_pArray->insert(_pArray->end(), makeArray(getArray(index)));}else{_pArray->insert(_pArray->end(), *it);}}_modified = false;}return *_pArray;}Poco::Dynamic::Array Array::makeArray(const JSON::Array::Ptr& arr){Poco::Dynamic::Array vec;JSON::Array::ConstIterator it = arr->begin();JSON::Array::ConstIterator end = arr->end();int index = 0;for (; it != end; ++it, ++index){if (arr->isObject(it)){Object::Ptr pObj = arr->getObject(index);DynamicStruct str = Poco::JSON::Object::makeStruct(pObj);vec.insert(vec.end(), str);}else if (arr->isArray(it)){Array::Ptr pArr = arr->getArray(index);std::vector<Poco::Dynamic::Var> v = makeArray(pArr);vec.insert(vec.end(), v);}elsevec.insert(vec.end(), *it);}return vec;}void Array::clear(){_values.clear();_pArray = 0;}} } // namespace Poco::JSON
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。