#ifndef WebIDBKey_h
#define WebIDBKey_h
#include "platform/WebCommon.h"
#include "platform/WebPrivatePtr.h"
#include "platform/WebString.h"
#include "platform/WebVector.h"
namespace WebCore { class IDBKey; }
namespace WebKit {
class WebIDBKeyPath;
class WebSerializedScriptValue;
class WebIDBKey {
public:
WebIDBKey() { }
~WebIDBKey() { reset(); }
WEBKIT_EXPORT static WebIDBKey createArray(const WebVector<WebIDBKey>&);
WEBKIT_EXPORT static WebIDBKey createString(const WebString&);
WEBKIT_EXPORT static WebIDBKey createDate(double);
WEBKIT_EXPORT static WebIDBKey createNumber(double);
WEBKIT_EXPORT static WebIDBKey createInvalid();
WEBKIT_EXPORT static WebIDBKey createNull();
WEBKIT_EXPORT static WebIDBKey createFromValueAndKeyPath(const WebSerializedScriptValue&, const WebIDBKeyPath&);
WEBKIT_EXPORT static WebSerializedScriptValue injectIDBKeyIntoSerializedValue(const WebIDBKey&, const WebSerializedScriptValue&, const WebIDBKeyPath&);
WebIDBKey(const WebIDBKey& e) { assign(e); }
WebIDBKey& operator=(const WebIDBKey& e)
{
assign(e);
return *this;
}
WEBKIT_EXPORT void assign(const WebIDBKey&);
WEBKIT_EXPORT void assignArray(const WebVector<WebIDBKey>&);
WEBKIT_EXPORT void assignString(const WebString&);
WEBKIT_EXPORT void assignDate(double);
WEBKIT_EXPORT void assignNumber(double);
WEBKIT_EXPORT void assignInvalid();
WEBKIT_EXPORT void assignNull();
WEBKIT_EXPORT void reset();
enum Type {
InvalidType = 0,
ArrayType,
StringType,
DateType,
NumberType,
NullType,
};
WEBKIT_EXPORT Type type() const;
WEBKIT_EXPORT WebVector<WebIDBKey> array() const; WEBKIT_EXPORT WebString string() const; WEBKIT_EXPORT double date() const; WEBKIT_EXPORT double number() const;
#if WEBKIT_IMPLEMENTATION
WebIDBKey(const WTF::PassRefPtr<WebCore::IDBKey>&);
WebIDBKey& operator=(const WTF::PassRefPtr<WebCore::IDBKey>&);
operator WTF::PassRefPtr<WebCore::IDBKey>() const;
#endif
private:
WebPrivatePtr<WebCore::IDBKey> m_private;
};
}
#endif // WebIDBKey_h