Number of values in array or object
| 879 | |
| 880 | /// Number of values in array or object |
| 881 | Value::UInt |
| 882 | Value::size() const |
| 883 | { |
| 884 | switch ( type_ ) |
| 885 | { |
| 886 | case nullValue: |
| 887 | case intValue: |
| 888 | case uintValue: |
| 889 | case realValue: |
| 890 | case booleanValue: |
| 891 | case stringValue: |
| 892 | return 0; |
| 893 | #ifndef JSON_VALUE_USE_INTERNAL_MAP |
| 894 | case arrayValue: // size of the array is highest index + 1 |
| 895 | if ( !value_.map_->empty() ) |
| 896 | { |
| 897 | ObjectValues::const_iterator itLast = value_.map_->end(); |
| 898 | --itLast; |
| 899 | return (*itLast).first.index()+1; |
| 900 | } |
| 901 | return 0; |
| 902 | case objectValue: |
| 903 | return Int( value_.map_->size() ); |
| 904 | #else |
| 905 | case arrayValue: |
| 906 | return Int( value_.array_->size() ); |
| 907 | case objectValue: |
| 908 | return Int( value_.map_->size() ); |
| 909 | #endif |
| 910 | default: |
| 911 | JSON_ASSERT_UNREACHABLE; |
| 912 | } |
| 913 | return 0; // unreachable; |
| 914 | } |
| 915 | |
| 916 | |
| 917 | bool |