| Index: base/id_map.h
|
| ===================================================================
|
| --- base/id_map.h (revision 19754)
|
| +++ base/id_map.h (working copy)
|
| @@ -28,12 +28,17 @@
|
| // Note, use iterator->first to get the ID, iterator->second to get the T*
|
| typedef typename HashTable::const_iterator const_iterator;
|
|
|
| - IDMap() : next_id_(1) {
|
| + IDMap() : next_id_(1), check_on_null_data_(false) {
|
| }
|
| - IDMap(const IDMap& other) : next_id_(other.next_id_),
|
| - data_(other.data_) {
|
| + IDMap(const IDMap& other)
|
| + : next_id_(other.next_id_),
|
| + data_(other.data_),
|
| + check_on_null_data_(other.check_on_null_data_) {
|
| }
|
|
|
| + // Sets whether Add should CHECK if passed in NULL data. Default is false.
|
| + void set_check_on_null_data(bool value) { check_on_null_data_ = value; }
|
| +
|
| const_iterator begin() const {
|
| return data_.begin();
|
| }
|
| @@ -43,6 +48,7 @@
|
|
|
| // Adds a view with an automatically generated unique ID. See AddWithID.
|
| int32 Add(T* data) {
|
| + CHECK(!check_on_null_data_ || data);
|
| int32 this_id = next_id_;
|
| DCHECK(data_.find(this_id) == data_.end()) << "Inserting duplicate item";
|
| data_[this_id] = data;
|
| @@ -55,6 +61,7 @@
|
| // this function, or allow this object to generate IDs and call Add. These
|
| // two methods may not be mixed, or duplicate IDs may be generated
|
| void AddWithID(T* data, int32 id) {
|
| + CHECK(!check_on_null_data_ || data);
|
| DCHECK(data_.find(id) == data_.end()) << "Inserting duplicate item";
|
| data_[id] = data;
|
| }
|
| @@ -88,6 +95,10 @@
|
| int32 next_id_;
|
|
|
| HashTable data_;
|
| +
|
| + private:
|
| + // See description above setter.
|
| + bool check_on_null_data_;
|
| };
|
|
|
| #endif // BASE_ID_MAP_H__
|
|
|