Commit effc8a8f authored by Milo Yip's avatar Milo Yip

Let constness of GenericArray::ValueItaertor depending on ValueType

parent 960324a9
...@@ -2325,8 +2325,8 @@ public: ...@@ -2325,8 +2325,8 @@ public:
typedef GenericArray<false, ValueT> Array; typedef GenericArray<false, ValueT> Array;
typedef ValueT PlainType; typedef ValueT PlainType;
typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType; typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType;
typedef typename ValueType::ValueIterator ValueIterator; typedef ValueType* ValueIterator; // This may be const or non-const iterator
typedef typename ValueType::ConstValueIterator ConstValueIterator; typedef const ValueType* ConstValueIterator;
typedef typename ValueType::AllocatorType AllocatorType; typedef typename ValueType::AllocatorType AllocatorType;
typedef typename ValueType::StringRefType StringRefType; typedef typename ValueType::StringRefType StringRefType;
...@@ -2341,31 +2341,26 @@ public: ...@@ -2341,31 +2341,26 @@ public:
SizeType Size() const { return ptr_->Size(); } SizeType Size() const { return ptr_->Size(); }
SizeType Capacity() const { return ptr_->Capacity(); } SizeType Capacity() const { return ptr_->Capacity(); }
bool Empty() const { return ptr_->Empty(); } bool Empty() const { return ptr_->Empty(); }
void Clear() { ptr_->Clear(); } void Clear() const { ptr_->Clear(); }
ValueType& operator[](SizeType index) { return (*ptr_)[index]; } ValueType& operator[](SizeType index) const { return (*ptr_)[index]; }
const ValueType& operator[](SizeType index) const { return (*ptr_)[index]; } ValueIterator Begin() const { return ptr_->Begin(); }
ValueIterator Begin() { return ptr_->Begin(); } ValueIterator End() const { return ptr_->End(); }
ValueIterator End() { return ptr_->End(); } const GenericArray& Reserve(SizeType newCapacity, AllocatorType &allocator) const { ptr_->Reserve(newCapacity, allocator); return *this; }
ConstValueIterator Begin() const { return ptr_->Begin(); } const GenericArray& PushBack(ValueType& value, AllocatorType& allocator) const { ptr_->PushBack(value, allocator); return *this; }
ConstValueIterator End() const { return ptr_->End(); }
GenericArray& Reserve(SizeType newCapacity, AllocatorType &allocator) { ptr_->Reserve(newCapacity, allocator); return *this; }
GenericArray& PushBack(ValueType& value, AllocatorType& allocator) { ptr_->PushBack(value, allocator); return *this; }
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
GenericArray& PushBack(ValueType&& value, AllocatorType& allocator) { ptr_->PushBack(value, allocator); return *this; } const GenericArray& PushBack(ValueType&& value, AllocatorType& allocator) const { ptr_->PushBack(value, allocator); return *this; }
#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS #endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
GenericArray& PushBack(StringRefType value, AllocatorType& allocator) { ptr_->PushBack(value, allocator); return *this; } const GenericArray& PushBack(StringRefType value, AllocatorType& allocator) const { ptr_->PushBack(value, allocator); return *this; }
template <typename T> template <typename T>
RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericArray&)) RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (const GenericArray&))
PushBack(T value, AllocatorType& allocator) { ptr_->PushBack(value, allocator); return *this; } PushBack(T value, AllocatorType& allocator) const { ptr_->PushBack(value, allocator); return *this; }
GenericArray& PopBack() { ptr_->PopBack(); return *this; } const GenericArray& PopBack() const { ptr_->PopBack(); return *this; }
ValueIterator Erase(ConstValueIterator pos) { return ptr_->Erase(pos); } ValueIterator Erase(ConstValueIterator pos) const { return ptr_->Erase(pos); }
ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) { return ptr_->Erase(first, last); } ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) const { return ptr_->Erase(first, last); }
#if RAPIDJSON_HAS_CXX11_RANGE_FOR #if RAPIDJSON_HAS_CXX11_RANGE_FOR
ValueIterator begin() { return ptr_->Begin(); } ValueIterator begin() const { return ptr_->Begin(); }
ValueIterator end() { return ptr_->End(); } ValueIterator end() const { return ptr_->End(); }
ConstValueIterator begin() const { return ptr_->Begin(); }
ConstValueIterator end() const { return ptr_->End(); }
#endif #endif
private: private:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment