#ifndef Dictionary_h
#define Dictionary_h
#include "EventListener.h"
#include "MessagePort.h"
#include "PlatformString.h"
#include "ScriptValue.h"
#include <v8.h>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/text/AtomicString.h>
namespace WebCore {
class DOMStringList;
class DOMWindow;
class IDBKeyRange;
class MediaKeyError;
class Notification;
class SpeechRecognitionError;
class SpeechRecognitionResult;
class SpeechRecognitionResultList;
class Storage;
class TrackBase;
class Dictionary {
public:
Dictionary();
Dictionary(const v8::Local<v8::Value>& options);
~Dictionary();
Dictionary& operator=(const Dictionary&);
bool isObject() const;
bool isUndefinedOrNull() const;
bool get(const String&, bool&) const;
bool get(const String&, int32_t&) const;
bool get(const String&, double&) const;
bool get(const String&, String&) const;
bool get(const String&, ScriptValue&) const;
bool get(const String&, short&) const;
bool get(const String&, unsigned short&) const;
bool get(const String&, unsigned&) const;
bool get(const String&, unsigned long long&) const;
bool get(const String&, RefPtr<DOMWindow>&) const;
bool get(const String&, RefPtr<Storage>&) const;
bool get(const String&, MessagePortArray&) const;
bool get(const String&, RefPtr<Uint8Array>&) const;
#if ENABLE(ENCRYPTED_MEDIA)
bool get(const String&, RefPtr<MediaKeyError>&) const;
#endif
#if ENABLE(VIDEO_TRACK)
bool get(const String&, RefPtr<TrackBase>&) const;
#endif
#if ENABLE(SCRIPTED_SPEECH)
bool get(const String&, RefPtr<SpeechRecognitionError>&) const;
bool get(const String&, RefPtr<SpeechRecognitionResult>&) const;
bool get(const String&, RefPtr<SpeechRecognitionResultList>&) const;
#endif
bool get(const String&, HashSet<AtomicString>&) const;
bool get(const String&, Dictionary&) const;
bool getOwnPropertiesAsStringHashMap(WTF::HashMap<String, String>&) const;
bool getWithUndefinedOrNullCheck(const String&, String&) const;
PassRefPtr<EventListener> getEventListener(const String&, Notification*) const { return 0; }
private:
bool getKey(const String& key, v8::Local<v8::Value>&) const;
static void* operator new(size_t);
static void* operator new[](size_t);
static void operator delete(void *);
v8::Local<v8::Value> m_options;
};
}
#endif // Dictionary_h