1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
3 * ***** BEGIN LICENSE BLOCK *****
4 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 1.1 (the "License"); you may not use this file except in compliance with
8 * the License. You may obtain a copy of the License at
9 * http://www.mozilla.org/MPL/
11 * Software distributed under the License is distributed on an "AS IS" basis,
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 * for the specific language governing rights and limitations under the
16 * The Original Code is mozilla.org Code.
18 * The Initial Developer of the Original Code is
19 * Netscape Communications Corporation.
20 * Portions created by the Initial Developer are Copyright (C) 1999
21 * the Initial Developer. All Rights Reserved.
24 * Chris Waterson <waterson@netscape.com>
26 * Alternatively, the contents of this file may be used under the terms of
27 * either of the GNU General Public License Version 2 or later (the "GPL"),
28 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29 * in which case the provisions of the GPL or the LGPL are applicable instead
30 * of those above. If you wish to allow use of your version of this file only
31 * under the terms of either the GPL or the LGPL, and not to allow others to
32 * use your version of this file under the terms of the MPL, indicate your
33 * decision by deleting the provisions above and replace them with the notice
34 * and other provisions required by the GPL or the LGPL. If you do not delete
35 * the provisions above, a recipient may use your version of this file under
36 * the terms of any one of the MPL, the GPL or the LGPL.
38 * ***** END LICENSE BLOCK ***** */
40 #ifndef nsNameSpaceMap_h__
41 #define nsNameSpaceMap_h__
52 Entry(const nsCSubstring
& aURI
, nsIAtom
* aPrefix
)
53 : mURI(aURI
), mPrefix(aPrefix
), mNext(nsnull
) {
54 MOZ_COUNT_CTOR(nsNameSpaceMap::Entry
); }
56 ~Entry() { MOZ_COUNT_DTOR(nsNameSpaceMap::Entry
); }
59 nsCOMPtr
<nsIAtom
> mPrefix
;
68 Put(const nsAString
& aURI
, nsIAtom
* aPrefix
);
71 Put(const nsCSubstring
& aURI
, nsIAtom
* aPrefix
);
73 class const_iterator
{
75 friend class nsNameSpaceMap
;
77 const_iterator(const Entry
* aCurrent
)
78 : mCurrent(aCurrent
) {}
80 const Entry
* mCurrent
;
86 const_iterator(const const_iterator
& iter
)
87 : mCurrent(iter
.mCurrent
) {}
90 operator=(const const_iterator
& iter
) {
91 mCurrent
= iter
.mCurrent
;
96 mCurrent
= mCurrent
->mNext
;
101 const_iterator
tmp(*this);
102 mCurrent
= mCurrent
->mNext
;
105 const Entry
* operator->() const { return mCurrent
; }
107 const Entry
& operator*() const { return *mCurrent
; }
110 operator==(const const_iterator
& iter
) const {
111 return mCurrent
== iter
.mCurrent
; }
114 operator!=(const const_iterator
& iter
) const {
115 return ! iter
.operator==(*this); }
118 const_iterator
first() const {
119 return const_iterator(mEntries
); }
121 const_iterator
last() const {
122 return const_iterator(nsnull
); }
124 const_iterator
GetNameSpaceOf(const nsCSubstring
& aURI
) const;
131 #endif // nsNameSpaceMap_h__