Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/xslt/base/txNamespaceMap.h
Line
Count
Source (jump to first uncovered line)
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
#ifndef TRANSFRMX_TXNAMESPACEMAP_H
7
#define TRANSFRMX_TXNAMESPACEMAP_H
8
9
#include "nsAtom.h"
10
#include "nsCOMArray.h"
11
#include "nsTArray.h"
12
13
class txNamespaceMap
14
{
15
public:
16
    txNamespaceMap();
17
    txNamespaceMap(const txNamespaceMap& aOther);
18
19
    nsrefcnt AddRef()
20
0
    {
21
0
        return ++mRefCnt;
22
0
    }
23
    nsrefcnt Release()
24
0
    {
25
0
        if (--mRefCnt == 0) {
26
0
            mRefCnt = 1; //stabilize
27
0
            delete this;
28
0
            return 0;
29
0
        }
30
0
        return mRefCnt;
31
0
    }
32
33
    nsresult mapNamespace(nsAtom* aPrefix, const nsAString& aNamespaceURI);
34
    int32_t lookupNamespace(nsAtom* aPrefix);
35
    int32_t lookupNamespaceWithDefault(const nsAString& aPrefix);
36
37
private:
38
    nsAutoRefCnt mRefCnt;
39
    nsTArray<RefPtr<nsAtom>> mPrefixes;
40
    nsTArray<int32_t> mNamespaces;
41
};
42
43
#endif //TRANSFRMX_TXNAMESPACEMAP_H