@@ -289,12 +289,14 @@ class GenericMemberIterator;
289
289
// ! non-const GenericMemberIterator
290
290
template <typename Encoding, typename Allocator>
291
291
class GenericMemberIterator <false ,Encoding,Allocator> {
292
+ public:
292
293
// ! use plain pointer as iterator type
293
294
typedef GenericMember<Encoding,Allocator>* Iterator;
294
295
};
295
296
// ! const GenericMemberIterator
296
297
template <typename Encoding, typename Allocator>
297
298
class GenericMemberIterator <true ,Encoding,Allocator> {
299
+ public:
298
300
// ! use plain const pointer as iterator type
299
301
typedef const GenericMember<Encoding,Allocator>* Iterator;
300
302
};
@@ -2001,17 +2003,18 @@ class GenericValue {
2001
2003
2002
2004
// Initial flags of different types.
2003
2005
kNullFlag = kNullType ,
2004
- kTrueFlag = kTrueType | kBoolFlag ,
2005
- kFalseFlag = kFalseType | kBoolFlag ,
2006
- kNumberIntFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag ,
2007
- kNumberUintFlag = kNumberType | kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag ,
2008
- kNumberInt64Flag = kNumberType | kNumberFlag | kInt64Flag ,
2009
- kNumberUint64Flag = kNumberType | kNumberFlag | kUint64Flag ,
2010
- kNumberDoubleFlag = kNumberType | kNumberFlag | kDoubleFlag ,
2011
- kNumberAnyFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag ,
2012
- kConstStringFlag = kStringType | kStringFlag ,
2013
- kCopyStringFlag = kStringType | kStringFlag | kCopyFlag ,
2014
- kShortStringFlag = kStringType | kStringFlag | kCopyFlag | kInlineStrFlag ,
2006
+ // These casts are added to suppress the warning on MSVC about bitwise operations between enums of different types.
2007
+ kTrueFlag = static_cast <int >(kTrueType ) | static_cast <int >(kBoolFlag ),
2008
+ kFalseFlag = static_cast <int >(kFalseType ) | static_cast <int >(kBoolFlag ),
2009
+ kNumberIntFlag = static_cast <int >(kNumberType ) | static_cast <int >(kNumberFlag | kIntFlag | kInt64Flag ),
2010
+ kNumberUintFlag = static_cast <int >(kNumberType ) | static_cast <int >(kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag ),
2011
+ kNumberInt64Flag = static_cast <int >(kNumberType ) | static_cast <int >(kNumberFlag | kInt64Flag ),
2012
+ kNumberUint64Flag = static_cast <int >(kNumberType ) | static_cast <int >(kNumberFlag | kUint64Flag ),
2013
+ kNumberDoubleFlag = static_cast <int >(kNumberType ) | static_cast <int >(kNumberFlag | kDoubleFlag ),
2014
+ kNumberAnyFlag = static_cast <int >(kNumberType ) | static_cast <int >(kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag ),
2015
+ kConstStringFlag = static_cast <int >(kStringType ) | static_cast <int >(kStringFlag ),
2016
+ kCopyStringFlag = static_cast <int >(kStringType ) | static_cast <int >(kStringFlag | kCopyFlag ),
2017
+ kShortStringFlag = static_cast <int >(kStringType ) | static_cast <int >(kStringFlag | kCopyFlag | kInlineStrFlag ),
2015
2018
kObjectFlag = kObjectType ,
2016
2019
kArrayFlag = kArrayType ,
2017
2020
@@ -2609,6 +2612,7 @@ class GenericArray {
2609
2612
GenericArray& operator =(const GenericArray& rhs) { value_ = rhs.value_ ; return *this ; }
2610
2613
~GenericArray () {}
2611
2614
2615
+ operator ValueType&() const { return value_; }
2612
2616
SizeType Size () const { return value_.Size (); }
2613
2617
SizeType Capacity () const { return value_.Capacity (); }
2614
2618
bool Empty () const { return value_.Empty (); }
@@ -2664,6 +2668,7 @@ class GenericObject {
2664
2668
GenericObject& operator =(const GenericObject& rhs) { value_ = rhs.value_ ; return *this ; }
2665
2669
~GenericObject () {}
2666
2670
2671
+ operator ValueType&() const { return value_; }
2667
2672
SizeType MemberCount () const { return value_.MemberCount (); }
2668
2673
SizeType MemberCapacity () const { return value_.MemberCapacity (); }
2669
2674
bool ObjectEmpty () const { return value_.ObjectEmpty (); }
0 commit comments