michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: /* atom list for CSS anonymous boxes */ michael@0: michael@0: #include "mozilla/ArrayUtils.h" michael@0: michael@0: #include "nsCSSAnonBoxes.h" michael@0: #include "nsAtomListUtils.h" michael@0: #include "nsStaticAtom.h" michael@0: michael@0: using namespace mozilla; michael@0: michael@0: // define storage for all atoms michael@0: #define CSS_ANON_BOX(_name, _value) \ michael@0: nsICSSAnonBoxPseudo* nsCSSAnonBoxes::_name; michael@0: #include "nsCSSAnonBoxList.h" michael@0: #undef CSS_ANON_BOX michael@0: michael@0: #define CSS_ANON_BOX(name_, value_) \ michael@0: NS_STATIC_ATOM_BUFFER(name_##_buffer, value_) michael@0: #include "nsCSSAnonBoxList.h" michael@0: #undef CSS_ANON_BOX michael@0: michael@0: static const nsStaticAtom CSSAnonBoxes_info[] = { michael@0: #define CSS_ANON_BOX(name_, value_) \ michael@0: NS_STATIC_ATOM(name_##_buffer, (nsIAtom**)&nsCSSAnonBoxes::name_), michael@0: #include "nsCSSAnonBoxList.h" michael@0: #undef CSS_ANON_BOX michael@0: }; michael@0: michael@0: void nsCSSAnonBoxes::AddRefAtoms() michael@0: { michael@0: NS_RegisterStaticAtoms(CSSAnonBoxes_info); michael@0: } michael@0: michael@0: bool nsCSSAnonBoxes::IsAnonBox(nsIAtom *aAtom) michael@0: { michael@0: return nsAtomListUtils::IsMember(aAtom, CSSAnonBoxes_info, michael@0: ArrayLength(CSSAnonBoxes_info)); michael@0: } michael@0: michael@0: #ifdef MOZ_XUL michael@0: /* static */ bool michael@0: nsCSSAnonBoxes::IsTreePseudoElement(nsIAtom* aPseudo) michael@0: { michael@0: return StringBeginsWith(nsDependentAtomString(aPseudo), michael@0: NS_LITERAL_STRING(":-moz-tree-")); michael@0: } michael@0: #endif