txNamespaceMap.h (1043B)
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 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 "nsCOMPtr.h" 11 #include "nsTArray.h" 12 13 class txNamespaceMap { 14 public: 15 txNamespaceMap(); 16 txNamespaceMap(const txNamespaceMap& aOther); 17 18 nsrefcnt AddRef() { return ++mRefCnt; } 19 nsrefcnt Release() { 20 if (--mRefCnt == 0) { 21 mRefCnt = 1; // stabilize 22 delete this; 23 return 0; 24 } 25 return mRefCnt; 26 } 27 28 nsresult mapNamespace(nsAtom* aPrefix, const nsAString& aNamespaceURI); 29 int32_t lookupNamespace(nsAtom* aPrefix); 30 int32_t lookupNamespaceWithDefault(const nsAString& aPrefix); 31 32 private: 33 nsAutoRefCnt mRefCnt; 34 nsTArray<RefPtr<nsAtom>> mPrefixes; 35 nsTArray<int32_t> mNamespaces; 36 }; 37 38 #endif // TRANSFRMX_TXNAMESPACEMAP_H