Import the WebKit version
[browser-dbus-bridge.git] / jscorebus / jscorebus-marshal.h
1 /**
2  * Browser D-Bus Bridge, JavaScriptCore version
3  *
4  * Copyright © 2008 Movial Creative Technologies Inc
5  *  Contact: Movial Creative Technologies Inc, <info@movial.com>
6  *  Authors: Kalle Vahlman, <kalle.vahlman@movial.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
20  *
21  */
22
23 /* Functions to convert between D-Bus types and JSCore types */
24
25 #ifndef __JSCOREBUS_CONVERT_H___
26 #define __JSCOREBUS_CONVERT_H___
27  
28 #include <dbus/dbus.h>
29 #include <JavaScriptCore/JavaScript.h>
30
31 /* The number class names are in guestimated usage frequency order to speed up
32  * iteration over them.
33  */
34 #define JSCOREBUS_N_NUMBER_CLASSES 8
35 char *jscorebus_number_class_names[JSCOREBUS_N_NUMBER_CLASSES];
36 int jscorebus_number_class_types[JSCOREBUS_N_NUMBER_CLASSES];
37
38 /* Append JSValues to a D-Bus message iter */
39 gboolean jsvalue_array_append_to_message_iter(JSContextRef context,
40                                               const JSValueRef jsvalues[],
41                                               int n_values,
42                                               DBusMessageIter *iter,
43                                               const char *signature);
44 gboolean jsvalue_append_to_message_iter(JSContextRef context,
45                                         const JSValueRef jsvalue,
46                                         DBusMessageIter *iter,
47                                         const char *signature);
48
49 /* Call a JS function with the arguments from a message */
50 void call_function_with_message_args(JSContextRef context,
51                                      JSObjectRef thisObject,
52                                      JSObjectRef function,
53                                      DBusMessage *message);
54
55 /* To JavaScript types */
56 JSValueRef jsvalue_from_message_iter(JSContextRef context,
57                                      DBusMessageIter *iter);
58 JSObjectRef function_from_jsvalue(JSContextRef context,
59                                   JSValueRef value,
60                                   JSValueRef* exception);
61
62 /* To D-Bus types */
63 char *string_from_jsstring(JSContextRef context, JSStringRef jsstring);
64 char *string_from_jsvalue(JSContextRef context, JSValueRef jsvalue);
65 dbus_uint64_t jsvalue_to_number_value (JSContextRef context,
66                                        JSValueRef jsvalue,
67                                        int *number_type);
68
69 /* JSValue to D-Bus signature (autodetection) */
70 char *jsvalue_to_signature(JSContextRef context, JSValueRef jsvalue);
71 gboolean
72 jsarray_get_signature(JSContextRef context,
73                       JSValueRef jsvalue,
74                       JSPropertyNameArrayRef propNames,
75                       char **signature);
76 gboolean
77 jsdict_get_signature(JSContextRef context,
78                      JSValueRef jsvalue,
79                      JSPropertyNameArrayRef propNames,
80                      char **signature);
81
82
83 /* Helper functions */
84 gboolean jsvalue_typeof(JSContextRef context,
85                         JSValueRef jsvalue,
86                         const char *type);
87 gboolean jsvalue_instanceof(JSContextRef context,
88                             JSValueRef jsvalue,
89                             const char *constructor);
90
91
92
93 #endif /* __JSCOREBUS_CONVERT_H___ */
94