diff -r 000000000000 -r 6474c204b198 content/base/public/nsXMLNameSpaceMap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/base/public/nsXMLNameSpaceMap.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,74 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef nsXMLNameSpaceMap_h_ +#define nsXMLNameSpaceMap_h_ + +#include "nsString.h" +#include "nsTArray.h" +#include "nsCOMPtr.h" +#include "nsIAtom.h" + +struct nsNameSpaceEntry +{ + nsNameSpaceEntry(nsIAtom *aPrefix) + : prefix(aPrefix) {} + + nsCOMPtr prefix; + int32_t nameSpaceID; +}; + +/** + * nsXMLNameSpaceMap contains a set of prefixes which are mapped onto + * namespaces. It allows the set to be searched by prefix or by namespace ID. + */ +class nsXMLNameSpaceMap +{ +public: + /** + * Allocates a new nsXMLNameSpaceMap (with new()) and if aForXML is + * true initializes it with the xmlns and xml namespaces. + */ + static NS_HIDDEN_(nsXMLNameSpaceMap*) Create(bool aForXML); + + /** + * Add a prefix and its corresponding namespace ID to the map. + * Passing a null |aPrefix| corresponds to the default namespace, which may + * be set to something other than kNameSpaceID_None. + */ + NS_HIDDEN_(nsresult) AddPrefix(nsIAtom *aPrefix, int32_t aNameSpaceID); + + /** + * Add a prefix and a namespace URI to the map. The URI will be converted + * to its corresponding namespace ID. + */ + NS_HIDDEN_(nsresult) AddPrefix(nsIAtom *aPrefix, nsString &aURI); + + /* + * Returns the namespace ID for the given prefix, if it is in the map. + * If |aPrefix| is null and is not in the map, then a null namespace + * (kNameSpaceID_None) is returned. If |aPrefix| is non-null and is not in + * the map, then kNameSpaceID_Unknown is returned. + */ + NS_HIDDEN_(int32_t) FindNameSpaceID(nsIAtom *aPrefix) const; + + /** + * If the given namespace ID is in the map, then the first prefix which + * maps to that namespace is returned. Otherwise, null is returned. + */ + NS_HIDDEN_(nsIAtom*) FindPrefix(int32_t aNameSpaceID) const; + + /* Removes all prefix mappings. */ + NS_HIDDEN_(void) Clear(); + + ~nsXMLNameSpaceMap() { Clear(); } + +private: + nsXMLNameSpaceMap() NS_HIDDEN; // use Create() to create new instances + + nsTArray mNameSpaces; +}; + +#endif