CSSNamespace.h revision 5ddde30071f639962dd557c453f2ad01f8f0fd00
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
29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    struct CSSNamespace : Noncopyable {
305ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen        AtomicString prefix;
315ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen        AtomicString uri;
325ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen        OwnPtr<CSSNamespace> parent;
335ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
345ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen        CSSNamespace(const AtomicString& prefix, const AtomicString& uri, PassOwnPtr<CSSNamespace> parent)
355ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            : prefix(prefix)
365ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            , uri(uri)
375ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            , parent(parent)
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        CSSNamespace* namespaceForPrefix(const AtomicString& prefix)
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            for (CSSNamespace* candidate = this; candidate; candidate = candidate->parent.get()) {
445ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen                if (candidate->prefix == prefix)
455ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen                    return candidate;
465ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen            }
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return 0;
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // CSSNamespace_h
54