| JsonCpp project page | JsonCpp home page |
#include <json/value.h>

Public Types | |
| typedef unsigned int | HashKey |
| typedef unsigned int | BucketIndex |
Public Member Functions | |
| ValueInternalMap () | |
| ValueInternalMap (const ValueInternalMap &other) | |
| ValueInternalMap & | operator= (const ValueInternalMap &other) |
| ~ValueInternalMap () | |
| void | swap (ValueInternalMap &other) |
| BucketIndex | size () const |
| void | clear () |
| bool | reserveDelta (BucketIndex growth) |
| bool | reserve (BucketIndex newItemCount) |
| const Value * | find (const char *key) const |
| Value * | find (const char *key) |
| Value & | resolveReference (const char *key, bool isStatic) |
| void | remove (const char *key) |
| void | doActualRemove (ValueInternalLink *link, BucketIndex index, BucketIndex bucketIndex) |
| ValueInternalLink *& | getLastLinkInBucket (BucketIndex bucketIndex) |
| Value & | setNewItem (const char *key, bool isStatic, ValueInternalLink *link, BucketIndex index) |
| Value & | unsafeAdd (const char *key, bool isStatic, HashKey hashedKey) |
| HashKey | hash (const char *key) const |
| int | compare (const ValueInternalMap &other) const |
Friends | |
| class | ValueIteratorBase |
| class | Value |
For internal use only.
ValueInternalMap is a tradional bucket based hash-table, with a linked list in each bucket to handle collision. There is an addional twist in that each node of the collision linked list is a page containing a fixed amount of value. This provides a better compromise between memory usage and speed.
Each bucket is made up of a chained list of ValueInternalLink. The last link of a given bucket can be found in the 'previous_' field of the following bucket. The last link of the last bucket is stored in tailLink_ as it has no following bucket. Only the last link of a bucket may contains 'available' item. The last link always contains at least one element unless is it the bucket one very first link.
Definition at line 664 of file value.h.
| typedef unsigned int Json::ValueInternalMap::BucketIndex |
| typedef unsigned int Json::ValueInternalMap::HashKey |
| Json::ValueInternalMap::ValueInternalMap | ( | ) |
Definition at line 168 of file json_internalmap.inl.
| Json::ValueInternalMap::ValueInternalMap | ( | const ValueInternalMap & | other | ) |
| Json::ValueInternalMap::~ValueInternalMap | ( | ) |
Definition at line 207 of file json_internalmap.inl.
References Json::mapAllocator(), Json::ValueInternalLink::next_, Json::ValueMapAllocator::releaseMapBuckets(), and Json::ValueMapAllocator::releaseMapLink().
| void Json::ValueInternalMap::clear | ( | ) |
| int Json::ValueInternalMap::compare | ( | const ValueInternalMap & | other | ) | const |
| void Json::ValueInternalMap::doActualRemove | ( | ValueInternalLink * | link, | |
| BucketIndex | index, | |||
| BucketIndex | bucketIndex | |||
| ) |
Definition at line 364 of file json_internalmap.inl.
References getLastLinkInBucket(), Json::ValueInternalLink::itemPerLink, Json::ValueInternalLink::items_, Json::mapAllocator(), Json::ValueInternalLink::next_, Json::ValueInternalLink::previous_, Json::ValueMapAllocator::releaseMapLink(), and Json::Value::swap().
Referenced by remove().

| Value * Json::ValueInternalMap::find | ( | const char * | key | ) |
| const Value * Json::ValueInternalMap::find | ( | const char * | key | ) | const |
Definition at line 279 of file json_internalmap.inl.
References hash(), Json::ValueInternalLink::itemPerLink, and Json::ValueInternalLink::next_.
Referenced by compare(), and find().

| ValueInternalLink *& Json::ValueInternalMap::getLastLinkInBucket | ( | BucketIndex | bucketIndex | ) |
Definition at line 407 of file json_internalmap.inl.
References Json::ValueInternalLink::previous_.
Referenced by doActualRemove(), and unsafeAdd().

| ValueInternalMap::HashKey Json::ValueInternalMap::hash | ( | const char * | key | ) | const |
Definition at line 461 of file json_internalmap.inl.
Referenced by find(), remove(), and resolveReference().

| ValueInternalMap & Json::ValueInternalMap::operator= | ( | const ValueInternalMap & | other | ) |
| void Json::ValueInternalMap::remove | ( | const char * | key | ) |
Definition at line 339 of file json_internalmap.inl.
References doActualRemove(), hash(), Json::ValueInternalLink::itemPerLink, and Json::ValueInternalLink::next_.
| bool Json::ValueInternalMap::reserve | ( | BucketIndex | newItemCount | ) |
Definition at line 265 of file json_internalmap.inl.
References Json::ValueMapAllocator::allocateMapBuckets(), and Json::mapAllocator().
Referenced by reserveDelta(), and ValueInternalMap().

| bool Json::ValueInternalMap::reserveDelta | ( | BucketIndex | growth | ) |
Definition at line 259 of file json_internalmap.inl.
References reserve().
Referenced by resolveReference().

| Value & Json::ValueInternalMap::resolveReference | ( | const char * | key, | |
| bool | isStatic | |||
| ) |
Definition at line 310 of file json_internalmap.inl.
References hash(), Json::ValueInternalLink::itemPerLink, Json::ValueInternalLink::next_, reserveDelta(), setNewItem(), and unsafeAdd().
Referenced by ValueInternalMap().

| Value & Json::ValueInternalMap::setNewItem | ( | const char * | key, | |
| bool | isStatic, | |||
| ValueInternalLink * | link, | |||
| BucketIndex | index | |||
| ) |
Definition at line 419 of file json_internalmap.inl.
References Json::ValueInternalLink::items_, and Json::ValueInternalLink::keys_.
Referenced by resolveReference(), and unsafeAdd().

| ValueInternalMap::BucketIndex Json::ValueInternalMap::size | ( | ) | const |
Definition at line 253 of file json_internalmap.inl.
| void Json::ValueInternalMap::swap | ( | ValueInternalMap & | other | ) |
Definition at line 227 of file json_internalmap.inl.
Referenced by clear(), and operator=().

Definition at line 434 of file json_internalmap.inl.
References Json::ValueMapAllocator::allocateMapLink(), getLastLinkInBucket(), Json::ValueInternalLink::itemPerLink, Json::ValueInternalLink::items_, JSON_ASSERT_MESSAGE, Json::mapAllocator(), Json::ValueInternalLink::next_, and setNewItem().
Referenced by resolveReference().

friend class ValueIteratorBase [friend] |
|
|
hosts this site. |
Send comments to: Json-cpp Developers |