Rubber stamped by hyatt.
[WebKit-https.git] / JavaScriptGlue / JSUtils.h
1 #ifndef __JSUtils_h
2 #define __JSUtils_h
3
4 /*
5         JSUtils.h
6 */
7
8 #ifndef __CORESERVICES__
9 #include <CoreServices/CoreServices.h>
10 #endif
11
12 #include <JavaScriptGlue/JavaScriptGlue.h>
13
14 #ifdef USE_JSHACK
15 #include <JSHack/value.h>
16 #include <JSHack/object.h>
17 #include <JSHack/types.h>
18 #include <JSHack/interpreter.h>
19 #include <JSHack/ustring.h>
20 #else
21 #include <JavaScriptCore/value.h>
22 #include <JavaScriptCore/object.h>
23 #include <JavaScriptCore/types.h>
24 #include <JavaScriptCore/interpreter.h>
25 #include <JavaScriptCore/collector.h>
26 #include <JavaScriptCore/ustring.h>
27 #endif
28
29 #define JAG_PINK_OR_LATER       1 /* %%% turn on for new JavaScriptCore */
30
31 using namespace KJS;
32
33 class JSBase;
34 class JSUserObject;
35 class JSRun;
36 class JSValueWrapper;
37 class JSUserObjectImp;
38
39 UString CFStringToUString(CFStringRef inCFString);
40 CFStringRef UStringToCFString(const UString& inUString);
41 #if JAG_PINK_OR_LATER
42 Identifier CFStringToIdentifier(CFStringRef inCFString);
43 CFStringRef IdentifierToCFString(const Identifier& inIdentifier);
44 #endif
45 JSUserObject* KJSValueToJSObject(const Value& inValue, ExecState *exec);
46 CFTypeRef KJSValueToCFType(const Value& inValue, ExecState *exec);
47 Value JSObjectKJSValue(JSUserObject* ptr);
48 CFTypeRef GetCFNull(void);
49
50 inline CFTypeRef RetainCFType(CFTypeRef x) { if (x) x = CFRetain(x); return x; }
51 inline void ReleaseCFType(CFTypeRef x) { if (x) CFRelease(x);  }
52
53 enum {
54         kJSInvalidTypeID = 0,
55         kJSObjectTypeID,
56         kJSRunTypeID
57 };
58
59 enum {
60     kJSUserObjectDataTypeUnknown,
61     kJSUserObjectDataTypeJSValueWrapper,
62     kJSUserObjectDataTypeCFType
63 };
64
65
66 #endif