18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *               1999 Waldo Bastian (bastian@kde.org)
45ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (C) 2004, 2006, 2010 Apple Inc. All rights reserved.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef CSSNamespace_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define CSSNamespace_h
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
25f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/text/AtomicString.h>
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
29ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    struct CSSNamespace {
30ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        WTF_MAKE_NONCOPYABLE(CSSNamespace); WTF_MAKE_FAST_ALLOCATED;
31ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    public:
325ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen        AtomicString prefix;
335ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen        AtomicString uri;
345ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen        OwnPtr<CSSNamespace> parent;
355ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
365ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen        CSSNamespace(const AtomicString& prefix, const AtomicString& uri, PassOwnPtr<CSSNamespace> parent)
375ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            : prefix(prefix)
385ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            , uri(uri)
395ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            , parent(parent)
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        CSSNamespace* namespaceForPrefix(const AtomicString& prefix)
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
455ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            for (CSSNamespace* candidate = this; candidate; candidate = candidate->parent.get()) {
465ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen                if (candidate->prefix == prefix)
475ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen                    return candidate;
485ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            }
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return 0;
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // CSSNamespace_h
56