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