Remove excessive headers from JavaScriptCore
[WebKit-https.git] / Source / JavaScriptCore / bindings / ScriptValue.h
1 /*
2  * Copyright (C) 2013 Apple Inc. All rights reserved.
3  * Copyright (c) 2008, 2011 Google Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  *     * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *     * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31
32 #pragma once
33
34 #include "JSCJSValue.h"
35 #include "JSCJSValueInlines.h"
36 #include "Strong.h"
37 #include "StrongInlines.h"
38 #include <wtf/text/WTFString.h>
39
40 namespace Inspector {
41
42 class InspectorValue;
43
44 JS_EXPORT_PRIVATE RefPtr<InspectorValue> toInspectorValue(JSC::ExecState&, JSC::JSValue);
45
46 }
47
48 namespace Deprecated {
49
50 class JS_EXPORT_PRIVATE ScriptValue {
51 public:
52     ScriptValue() { }
53     ScriptValue(JSC::VM& vm, JSC::JSValue value) : m_value(vm, value) { }
54     virtual ~ScriptValue();
55
56     operator JSC::JSValue() const { return jsValue(); }
57     JSC::JSValue jsValue() const { return m_value.get(); }
58     bool getString(JSC::ExecState*, String& result) const;
59     String toString(JSC::ExecState*) const;
60     bool isEqual(JSC::ExecState*, const ScriptValue&) const;
61     bool isNull() const;
62     bool isUndefined() const;
63     bool isObject() const;
64     bool isFunction() const;
65     bool hasNoValue() const { return !m_value; }
66
67     void clear() { m_value.clear(); }
68
69     bool operator==(const ScriptValue& other) const { return m_value == other.m_value; }
70
71     RefPtr<Inspector::InspectorValue> toInspectorValue(JSC::ExecState*) const;
72
73 private:
74     JSC::Strong<JSC::Unknown> m_value;
75 };
76
77 } // namespace Deprecated