1ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block/*
2ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * Copyright (C) 2010 Apple Inc. All rights reserved.
3ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block *
4ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * Redistribution and use in source and binary forms, with or without
5ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * modification, are permitted provided that the following conditions
6ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * are met:
7ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * 1. Redistributions of source code must retain the above copyright
8ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block *    notice, this list of conditions and the following disclaimer.
9ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * 2. Redistributions in binary form must reproduce the above copyright
10ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block *    notice, this list of conditions and the following disclaimer in the
11ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block *    documentation and/or other materials provided with the distribution.
12ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block *
13ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * THE POSSIBILITY OF SUCH DAMAGE.
24ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block */
25ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
26ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#ifndef DOMStringMap_h
27ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#define DOMStringMap_h
28ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
29ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include "PlatformString.h"
30ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include <wtf/Noncopyable.h>
31ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include <wtf/Vector.h>
32ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
33ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blocknamespace WebCore {
34ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
3568513a70bcd92384395513322f1b801e7bf9c729Steve Blockclass Element;
36ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blocktypedef int ExceptionCode;
37ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
38ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass DOMStringMap {
39ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    WTF_MAKE_NONCOPYABLE(DOMStringMap); WTF_MAKE_FAST_ALLOCATED;
40ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockpublic:
41ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual ~DOMStringMap();
42ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
43ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual void ref() = 0;
44ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual void deref() = 0;
45ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
46ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual void getNames(Vector<String>&) = 0;
47ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual String item(const String& name) = 0;
48ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool contains(const String& name) = 0;
49ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual void setItem(const String& name, const String& value, ExceptionCode&) = 0;
50ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual void deleteItem(const String& name, ExceptionCode&) = 0;
51ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
5268513a70bcd92384395513322f1b801e7bf9c729Steve Block    virtual Element* element() = 0;
5368513a70bcd92384395513322f1b801e7bf9c729Steve Block
54ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockprotected:
55ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    DOMStringMap()
56ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    {
57ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    }
58ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block};
59ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
60ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} // namespace WebCore
61ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
62ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#endif // DOMStringMap_h
63