| Index: client/simple_string_dictionary.h | 
| diff --git a/client/simple_string_dictionary.h b/client/simple_string_dictionary.h | 
| index b9bc1c3ec2a613693837f00cf13a86c137bc5c55..ef90f2c2140cf0840db2068db6af9bf9b1cff4fb 100644 | 
| --- a/client/simple_string_dictionary.h | 
| +++ b/client/simple_string_dictionary.h | 
| @@ -27,39 +27,50 @@ namespace crashpad { | 
| // using one of the constructors. | 
| struct SerializedSimpleStringDictionary; | 
|  | 
| -// TSimpleStringDictionary is an implementation of a map/dictionary collection | 
| -// that uses a fixed amount of storage, so that it does not perform any dynamic | 
| -// allocations for its operations. | 
| -// | 
| -// The actual map storage (the Entry) is guaranteed to be POD, so that it can be | 
| -// transmitted over various IPC mechanisms. | 
| -// | 
| -// The template parameters control the amount of storage used for the key, | 
| -// value, and map. The KeySize and ValueSize are measured in bytes, not glyphs, | 
| -// and includes space for a \0 byte. This gives space for KeySize-1 and | 
| -// ValueSize-1 characters in an entry. NumEntries is the total number of entries | 
| -// that will fit in the map. | 
| +//! \brief A map/dictionary collection implementation using a fixed amount of | 
| +//!     storage, so that it does not perform any dynamic allocations for its | 
| +//!     operations. | 
| +//! | 
| +//! The actual map storage (TSimpleStringDictionary::Entry) is guaranteed to be | 
| +//! POD, so that it can be transmitted over various IPC mechanisms. | 
| +//! | 
| +//! The template parameters control the amount of storage used for the key, | 
| +//! value, and map. The \a KeySize and \a ValueSize are measured in bytes, not | 
| +//! glyphs, and include space for a trailing `NUL` byte. This gives space for | 
| +//! `KeySize - 1` and `ValueSize - 1` characters in an entry. \a NumEntries is | 
| +//! the total number of entries that will fit in the map. | 
| template <size_t KeySize = 256, size_t ValueSize = 256, size_t NumEntries = 64> | 
| class TSimpleStringDictionary { | 
| public: | 
| -  // Constant and publicly accessible versions of the template parameters. | 
| +  //! \brief Constant and publicly accessible versions of the template | 
| +  //!     parameters. | 
| +  //! \{ | 
| static const size_t key_size = KeySize; | 
| static const size_t value_size = ValueSize; | 
| static const size_t num_entries = NumEntries; | 
| +  //! \} | 
|  | 
| -  // An Entry object is a single entry in the map. If the key is a 0-length | 
| -  // NUL-terminated string, the entry is empty. | 
| +  //! \brief A single entry in the map. | 
| struct Entry { | 
| +    //! \brief The entry’s key. | 
| +    //! | 
| +    //! If this is a 0-length `NUL`-terminated string, the entry is inactive. | 
| char key[KeySize]; | 
| + | 
| +    //! \brief The entry’s value. | 
| char value[ValueSize]; | 
|  | 
| +    //! \brief Returns the validity of the entry. | 
| +    //! | 
| +    //! If #key is an empty string, the entry is considered inactive, and this | 
| +    //! method returns `false`. Otherwise, returns `true`. | 
| bool is_active() const { | 
| return key[0] != '\0'; | 
| -      } | 
| +    } | 
| }; | 
|  | 
| -  // An Iterator can be used to iterate over all the active entries in a | 
| -  // TSimpleStringDictionary. | 
| +  //! \brief An iterator to traverse all of the active entries in a | 
| +  //!     TSimpleStringDictionary. | 
| class Iterator { | 
| public: | 
| explicit Iterator(const TSimpleStringDictionary& map) | 
| @@ -67,8 +78,8 @@ class TSimpleStringDictionary { | 
| current_(0) { | 
| } | 
|  | 
| -    // Returns the next entry in the map, or NULL if at the end of the | 
| -    // collection. | 
| +    //! \brief Returns the next entry in the map, or `NULL` if at the end of the | 
| +    //!     collection. | 
| const Entry* Next() { | 
| while (current_ < map_.num_entries) { | 
| const Entry* entry = &map_.entries_[current_++]; | 
| @@ -99,8 +110,8 @@ class TSimpleStringDictionary { | 
| return *this; | 
| } | 
|  | 
| -  // Constructs a map from its serialized form. |map| should be the out | 
| -  // parameter from Serialize() and |size| should be its return value. | 
| +  //! \brief Constructs a map from its serialized form. \a map should be the out | 
| +  //!     parameter from Serialize(), and \a size should be its return value. | 
| TSimpleStringDictionary( | 
| const SerializedSimpleStringDictionary* map, size_t size) { | 
| DCHECK_EQ(size, sizeof(entries_)); | 
| @@ -109,8 +120,8 @@ class TSimpleStringDictionary { | 
| } | 
| } | 
|  | 
| -  // Returns the number of active key/value pairs. The upper limit for this is | 
| -  // NumEntries. | 
| +  //! \brief Returns the number of active key/value pairs. The upper limit for | 
| +  //!     this is \a NumEntries. | 
| size_t GetCount() const { | 
| size_t count = 0; | 
| for (size_t i = 0; i < num_entries; ++i) { | 
| @@ -121,8 +132,12 @@ class TSimpleStringDictionary { | 
| return count; | 
| } | 
|  | 
| -  // Given |key|, returns its corresponding |value|. |key| must not be NULL. If | 
| -  // the key is not found, NULL is returned. | 
| +  //! \brief Given \a key, returns its corresponding value. | 
| +  //! | 
| +  //! \param[in] key The key to look up. This must not be `NULL`. | 
| +  //! | 
| +  //! \return The corresponding value for \a key, or if \a key is not found, | 
| +  //!     `NULL`. | 
| const char* GetValueForKey(const char* key) const { | 
| DCHECK(key); | 
| if (!key) { | 
| @@ -137,10 +152,15 @@ class TSimpleStringDictionary { | 
| return entry->value; | 
| } | 
|  | 
| -  // Stores |value| into |key|, replacing the existing value if |key| is already | 
| -  // present. |key| must not be NULL. If |value| is NULL, the key is removed | 
| -  // from the map. If there is no more space in the map, then the operation | 
| -  // silently fails. | 
| +  //! \brief Stores \a value into \a key, replacing the existing value if \a key | 
| +  //!     is already present. | 
| +  //! | 
| +  //! If there \a key is not yet in the map and the map is already full | 
| +  //! (containing \a NumEntries active entries), this operation silently fails. | 
| +  //! | 
| +  //! \param[in] key The key to store. This must not be `NULL`. | 
| +  //! \param[in] value The value to store. If `NULL`, \a key is removed from the | 
| +  //!     map. | 
| void SetKeyValue(const char* key, const char* value) { | 
| if (!value) { | 
| RemoveKey(key); | 
| @@ -152,7 +172,7 @@ class TSimpleStringDictionary { | 
| return; | 
| } | 
|  | 
| -    // Key must not be an empty string. | 
| +    // |key| must not be an empty string. | 
| DCHECK_NE(key[0], '\0'); | 
| if (key[0] == '\0') { | 
| return; | 
| @@ -194,8 +214,11 @@ class TSimpleStringDictionary { | 
| entry->value[value_size - 1] = '\0'; | 
| } | 
|  | 
| -  // Given |key|, removes any associated value. |key| must not be NULL. If the | 
| -  // key is not found, this is a noop. | 
| +  //! \brief Removes \a key from the map. | 
| +  //! | 
| +  //! If the key is not found, this is a no-op. | 
| +  //! | 
| +  //! \param[in] key The key of the entry to remove. This must not be `NULL`. | 
| void RemoveKey(const char* key) { | 
| DCHECK(key); | 
| if (!key) { | 
| @@ -211,10 +234,13 @@ class TSimpleStringDictionary { | 
| DCHECK_EQ(GetEntryForKey(key), static_cast<void*>(NULL)); | 
| } | 
|  | 
| -  // Places a serialized version of the map into |map| and returns the size. | 
| -  // Both of these should be passed to the deserializing constructor. Note that | 
| -  // the serialized |map| is scoped to the lifetime of the non-serialized | 
| -  // instance of this class. The |map| can be copied across IPC boundaries. | 
| +  //! \brief Returns a serialized form of the map. | 
| +  //! | 
| +  //! Places a serialized version of the map into \a map and returns the size in | 
| +  //! bytes. Both \a map and the size should be passed to the deserializing | 
| +  //! constructor. Note that the serialized \a map is scoped to the lifetime of | 
| +  //! the non-serialized instance of this class. The \a map data can be copied | 
| +  //! across IPC boundaries. | 
| size_t Serialize(const SerializedSimpleStringDictionary** map) const { | 
| *map = reinterpret_cast<const SerializedSimpleStringDictionary*>(entries_); | 
| return sizeof(entries_); | 
| @@ -237,8 +263,10 @@ class TSimpleStringDictionary { | 
| Entry entries_[NumEntries]; | 
| }; | 
|  | 
| -// For historical reasons this specialized version is available with the same | 
| -// size factors as a previous implementation. | 
| +//! \brief A TSimpleStringDictionary with default template parameters. | 
| +//! | 
| +//! For historical reasons this specialized version is available with the same | 
| +//! size factors as a previous implementation. | 
| typedef TSimpleStringDictionary<256, 256, 64> SimpleStringDictionary; | 
|  | 
| }  // namespace crashpad | 
|  |