LCOV - code coverage report
Current view: top level - dom/xul/templates - nsResourceSet.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 58 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 7 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /* This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #include "nsResourceSet.h"
       7             : 
       8           0 : nsResourceSet::nsResourceSet(const nsResourceSet& aResourceSet)
       9             :     : mResources(nullptr),
      10             :       mCount(0),
      11           0 :       mCapacity(0)
      12             : {
      13           0 :     ConstIterator last = aResourceSet.Last();
      14           0 :     for (ConstIterator resource = aResourceSet.First(); resource != last; ++resource)
      15           0 :         Add(*resource);
      16           0 : }
      17             : 
      18             : 
      19             : nsResourceSet&
      20           0 : nsResourceSet::operator=(const nsResourceSet& aResourceSet)
      21             : {
      22           0 :     Clear();
      23           0 :     ConstIterator last = aResourceSet.Last();
      24           0 :     for (ConstIterator resource = aResourceSet.First(); resource != last; ++resource)
      25           0 :         Add(*resource);
      26           0 :     return *this;
      27             : }
      28             : 
      29           0 : nsResourceSet::~nsResourceSet()
      30             : {
      31           0 :     MOZ_COUNT_DTOR(nsResourceSet);
      32           0 :     Clear();
      33           0 :     delete[] mResources;
      34           0 : }
      35             : 
      36             : nsresult
      37           0 : nsResourceSet::Clear()
      38             : {
      39           0 :     while (--mCount >= 0) {
      40           0 :         NS_RELEASE(mResources[mCount]);
      41             :     }
      42           0 :     mCount = 0;
      43           0 :     return NS_OK;
      44             : }
      45             : 
      46             : nsresult
      47           0 : nsResourceSet::Add(nsIRDFResource* aResource)
      48             : {
      49           0 :     NS_PRECONDITION(aResource != nullptr, "null ptr");
      50           0 :     if (! aResource)
      51           0 :         return NS_ERROR_NULL_POINTER;
      52             : 
      53           0 :     if (Contains(aResource))
      54           0 :         return NS_OK;
      55             : 
      56           0 :     if (mCount >= mCapacity) {
      57           0 :         int32_t capacity = mCapacity + 4;
      58           0 :         nsIRDFResource** resources = new nsIRDFResource*[capacity];
      59           0 :         for (int32_t i = mCount - 1; i >= 0; --i)
      60           0 :             resources[i] = mResources[i];
      61             : 
      62           0 :         delete[] mResources;
      63             : 
      64           0 :         mResources = resources;
      65           0 :         mCapacity = capacity;
      66             :     }
      67             : 
      68           0 :     mResources[mCount++] = aResource;
      69           0 :     NS_ADDREF(aResource);
      70           0 :     return NS_OK;
      71             : }
      72             : 
      73             : void
      74           0 : nsResourceSet::Remove(nsIRDFResource* aProperty)
      75             : {
      76           0 :     bool found = false;
      77             : 
      78           0 :     nsIRDFResource** res = mResources;
      79           0 :     nsIRDFResource** limit = mResources + mCount;
      80           0 :     while (res < limit) {
      81           0 :         if (found) {
      82           0 :             *(res - 1) = *res;
      83             :         }
      84           0 :         else if (*res == aProperty) {
      85           0 :             NS_RELEASE(*res);
      86           0 :             found = true;
      87             :         }
      88           0 :         ++res;
      89             :     }
      90             : 
      91           0 :     if (found)
      92           0 :         --mCount;
      93           0 : }
      94             : 
      95             : bool
      96           0 : nsResourceSet::Contains(nsIRDFResource* aResource) const
      97             : {
      98           0 :     for (int32_t i = mCount - 1; i >= 0; --i) {
      99           0 :         if (mResources[i] == aResource)
     100           0 :             return true;
     101             :     }
     102             : 
     103           0 :     return false;
     104             : }
     105             : 

Generated by: LCOV version 1.13