{ switch ( type_ ) { case nullValue: case intValue: case uintValue: case realValue: case booleanValue: value_ = other.value_; break; case stringValue: if ( other.value_.string_ ) { value_.string_ = valueAllocator()->duplicateStringValue( other.value_.string_ ); allocated_ = true; } else value_.string_ = 0; break; #ifndef JSON_VALUE_USE_INTERNAL_MAP case arrayValue: case objectValue: value_.map_ = new ObjectValues( *other.value_.map_ ); break; #else case arrayValue: value_.array_ = arrayAllocator()->newArrayCopy( *other.value_.array_ ); break; case objectValue: value_.map_ = mapAllocator()->newMapCopy( *other.value_.map_ ); break; #endif default: JSON_ASSERT_UNREACHABLE; } if ( other.comments_ ) { comments_ = new CommentInfo[numberOfCommentPlacement]; for ( int comment =0; comment < numberOfCommentPlacement; ++comment ) { const CommentInfo &otherComment = other.comments_[comment]; if ( otherComment.comment_ ) comments_[comment].setComment( otherComment.comment_ ); } } }
时间: 2023-06-03 21:05:13 浏览: 138
这段代码是一个 switch 语句,根据变量 type_ 的值来进行不同的操作。针对 nullValue、intValue、uintValue、realValue、booleanValue 这五个情况,代码会将 other 的值赋给 value_,然后跳出 switch 语句。对于 stringValue 的情况,代码会检查 other.value_.string_ 是否存在,如果存在,则利用 valueAllocator() 分配内存并复制 other 的字符串到新的内存中,并将其赋给 value_.string_,同时将标志变量 allocated_ 置为 true。如果 other.value_.string_ 不存在,则将 value_.string_ 赋为 0。然后跳出 switch 语句。
阅读全文