LCOV - code coverage report
Current view: top level - xpcom/ds - nsDataHashtable.h (source / functions) Hit Total Coverage
Test: output.info Lines: 5 11 45.5 %
Date: 2017-07-14 16:53:18 Functions: 88 316 27.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #ifndef nsDataHashtable_h__
       8             : #define nsDataHashtable_h__
       9             : 
      10             : #include "nsHashKeys.h"
      11             : #include "nsBaseHashtable.h"
      12             : #include "mozilla/Maybe.h"
      13             : 
      14             : /**
      15             :  * templated hashtable class maps keys to simple datatypes.
      16             :  * See nsBaseHashtable for complete declaration
      17             :  * @param KeyClass a wrapper-class for the hashtable key, see nsHashKeys.h
      18             :  *   for a complete specification.
      19             :  * @param DataType the simple datatype being wrapped
      20             :  * @see nsInterfaceHashtable, nsClassHashtable
      21             :  */
      22             : template<class KeyClass, class DataType>
      23         948 : class nsDataHashtable
      24             :   : public nsBaseHashtable<KeyClass, DataType, DataType>
      25             : {
      26             : private:
      27             :   typedef nsBaseHashtable<KeyClass, DataType, DataType> BaseClass;
      28             : 
      29             : public:
      30             :   using typename BaseClass::KeyType;
      31             :   using typename BaseClass::EntryType;
      32             : 
      33        2272 :   nsDataHashtable() {}
      34         340 :   explicit nsDataHashtable(uint32_t aInitLength)
      35         340 :     : BaseClass(aInitLength)
      36             :   {
      37         340 :   }
      38             : 
      39             :   /**
      40             :    * Retrieve the value for a key and remove the corresponding entry at
      41             :    * the same time.
      42             :    *
      43             :    * @param aKey the key to retrieve and remove
      44             :    * @return the found value, or Nothing if no entry was found with the
      45             :    *   given key.
      46             :    */
      47           0 :   mozilla::Maybe<DataType> GetAndRemove(KeyType aKey)
      48             :   {
      49           0 :     mozilla::Maybe<DataType> value;
      50           0 :     if (EntryType* ent = this->GetEntry(aKey)) {
      51           0 :       value.emplace(mozilla::Move(ent->mData));
      52           0 :       this->RemoveEntry(ent);
      53             :     }
      54           0 :     return value;
      55             :   }
      56             : };
      57             : 
      58             : #endif // nsDataHashtable_h__

Generated by: LCOV version 1.13