annotate tools/gen_v8_binding.m4 @ 1396:a5672125e515

Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically. Support isuse attribute to decide how to generate the tweened matrix.
author wycc
date Sat, 02 Apr 2011 05:39:26 +0800
parents e21ccbc4afb1
children 67282421b0ac
rev   line source
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
1 dnl
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
2 dnl Developers should provide SET, WRAP, UNWRAP, and THROW C macros.
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
3 dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
4 changequote(`[', `]')dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
5 include([foreach.m4])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
6 divert([-1])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
7
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
8 define([UNQUOTE], [$*])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
9
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
10 define([QUOTE], [[[$*]]])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
11
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
12 define([VARFRAME], [dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
13 pushdef([_FRAME_VARS], [])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
14 ])
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
15
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
16 define([UNVARFRAME], [dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
17 EXPAND(_FRAME_VARS)dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
18 popdef([_FRAME_VARS])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
19 ])
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
20
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
21 define([fdefine], [dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
22 pushdef([$1], [$2])dnl
678
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
23 define([_FRAME_VARS], QUOTE(_FRAME_VARS[popdef([$1])]))dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
24 ])
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
25
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
26 define([COUNT],[ifelse([$*],[],0,[$#])])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
27
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
28 define([IMPORT],[define([$1],[$2$1(]$[]@[)])])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
29
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
30 define([EXPAND], [$1])
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
31
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
32 define([PROJ_PREFIX], [xnjsmb_])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
33
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
34 define([START_ACCESSOR], [dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
35 divert([-1])dnl
678
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
36 VARFRAME[]dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
37 fdefine([INT], [
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
38 static Handle<Value>
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
39 ]PROJ_PREFIX[]STRUCT_NAME[_get_$][1(Local<String> property, const AccessorInfo &info) {
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
40 Handle<Object> self = info.This();
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
41 STRUCT_TYPE *data;
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
42
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
43 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
44 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
45 THROW("Invalid object");
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
46 return Integer::New(data->$][1);
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
47 }
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
48
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
49 static void
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
50 ]PROJ_PREFIX[]STRUCT_NAME[_set_$][1(Local<String> property,
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
51 Local<Value> value,
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
52 const AccessorInfo &info) {
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
53 Handle<Object> self = info.This();
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
54 STRUCT_TYPE *data;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
55
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
56 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
57 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
58 THROW_noret("Invalid object");
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
59 data->$][1 = value->Int32Value();
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
60 }
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
61 ])
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
62 fdefine([NUMBER], [
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
63 static Handle<Value>
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
64 ]PROJ_PREFIX[]STRUCT_NAME[_get_$][1(Local<String> property, const AccessorInfo &info) {
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
65 Handle<Object> self = info.This();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
66 STRUCT_TYPE *data;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
67
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
68 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
69 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
70 THROW("Invalid object");
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
71 return Number::New(data->$][1);
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
72 }
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
73
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
74 static void
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
75 ]PROJ_PREFIX[]STRUCT_NAME[_set_$][1(Local<String> property,
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
76 Local<Value> value,
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
77 const AccessorInfo &info) {
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
78 Handle<Object> self = info.This();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
79 STRUCT_TYPE *data;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
80
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
81 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
82 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
83 THROW_noret("Invalid object");
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
84 data->$][1 = value->NumberValue();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
85 }
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
86 ])
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
87 fdefine([OBJ], [
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
88 static Handle<Value>
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
89 ]PROJ_PREFIX[]STRUCT_NAME[_get_$][1(Local<String> property, const AccessorInfo &info) {
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
90 Handle<Object> self = info.This();
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
91 STRUCT_TYPE *data;
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
92
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
93 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
94 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
95 THROW("Invalid object");
657
32d0eef1ee46 Force type-casting for member variables.
Thinker K.F. Li <thinker@branda.to>
parents: 651
diff changeset
96 return ]PROJ_PREFIX[$][2_new(($][3 *)data->$][1);
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
97 }
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
98
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
99 static void
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
100 ]PROJ_PREFIX[]STRUCT_NAME[_set_$][1(Local<String> property,
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
101 Local<Value> value,
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
102 const AccessorInfo &info) {
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
103 Handle<Object> self = info.This();
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
104 Handle<Object> obj;
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
105 $][3 *v;
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
106 STRUCT_TYPE *data;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
107
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
108 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
109 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
110 THROW_noret("Invalid object");
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
111 obj = value->ToObject();
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
112 v = ($][3 *)UNWRAP(obj);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
113 if(v == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
114 THROW_noret("Invalid object");
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
115 data->$][1 = v;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
116 }
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
117 ])
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
118 fdefine([ARRAY], [
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
119 static Handle<Value>
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
120 ]PROJ_PREFIX[]STRUCT_NAME[_get_$][1(Local<String> property, const AccessorInfo &info) {
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
121 Handle<Object> self = info.This();
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
122 STRUCT_TYPE *data;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
123
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
124 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
125 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
126 THROW("Invalid object");
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
127 return data->$][1;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
128 }
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
129
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
130 static void
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
131 ]PROJ_PREFIX[]STRUCT_NAME[_set_$][1(Local<String> property,
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
132 Local<Value> value,
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
133 const AccessorInfo &info) {
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
134 Handle<Object> self = info.This();
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
135 Handle<Object> obj;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
136 STRUCT_TYPE *data;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
137
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
138 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
139 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
140 THROW_noret("Invalid object");
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
141 data->$][1 = value;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
142 }
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
143 ])
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
144 fdefine([STR], [
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
145 static Handle<Value>
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
146 ]PROJ_PREFIX[]STRUCT_NAME[_get_$][1(Local<String> property, const AccessorInfo &info) {
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
147 Handle<Object> self = info.This();
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
148 STRUCT_TYPE *data;
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
149
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
150 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
151 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
152 THROW("Invalid object");
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
153 return String::New(data->$][1);
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
154 }
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
155
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
156 static void
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
157 ]PROJ_PREFIX[]STRUCT_NAME[_set_$][1(Local<String> property,
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
158 Local<Value> value,
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
159 const AccessorInfo &info) {
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
160 Handle<Object> self = info.This();
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
161 STRUCT_TYPE *data;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
162
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
163 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
164 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
165 THROW_noret("Invalid object");
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
166 String::Utf8Value utf8(value->ToString());
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
167 free(data->$][1);
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
168 data->$][1 = strdup(*utf8);
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
169 }
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
170 ])
674
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
171 dnl
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
172 dnl ACCESSOR(name, getter, setter)
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
173 dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
174 fdefine([ACCESSOR], [
674
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
175 static Handle<Value>
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
176 ]PROJ_PREFIX[]STRUCT_NAME[_get_$][1(Local<String> property, const AccessorInfo &info) {
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
177 Handle<Object> self = info.This();
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
178 Handle<Value> _ret;
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
179 STRUCT_TYPE *data;
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
180 const char *err = NULL;
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
181
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
182 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
183 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
184 THROW("Invalid object");
674
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
185 _ret = $][2(self, data, &err);
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
186 if(err)
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
187 THROW(err);
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
188 return _ret;
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
189 }
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
190
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
191 static void
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
192 ]PROJ_PREFIX[]STRUCT_NAME[_set_$][1(Local<String> property,
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
193 Local<Value> value,
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
194 const AccessorInfo &info) {
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
195 Handle<Object> self = info.This();
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
196 STRUCT_TYPE *data;
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
197 const char *err = NULL;
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
198
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
199 data = (STRUCT_TYPE *)UNWRAP(self);
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
200 if(data == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
201 THROW_noret("Invalid object");
674
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
202 $][3(self, data, value, &err);
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
203 if(err)
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
204 THROW_noret(err);
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
205 }
5c8387fd123e Support user defined accessors on binding generated
Thinker K.F. Li <thinker@branda.to>
parents: 670
diff changeset
206 ])
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
207 divert([])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
208 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
209
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
210 define([STOP_ACCESSOR], [dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
211 divert([-1])dnl
678
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
212 UNVARFRAME[]dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
213 divert([])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
214 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
215
809
e21ccbc4afb1 Fix a typo
Thinker K.F. Li <thinker@codemud.net>
parents: 740
diff changeset
216 define([SET_ACCESSOR], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
217 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
218 fdefine([INT], [$][1])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
219 fdefine([NUMBER], [$][1])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
220 fdefine([OBJ], [$][1])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
221 fdefine([ARRAY], [$][1])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
222 fdefine([STR], [$][1])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
223 fdefine([ACCESSOR], [$][1])dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
224 inst_temp->SetAccessor(String::New("$1"),
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
225 PROJ_PREFIX[]STRUCT_NAME[]_get_[]$1,
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
226 PROJ_PREFIX[]STRUCT_NAME[]_set_[]$1);
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
227 UNVARFRAME[]dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
228 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
229
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
230 define([START_METHOD_ARG_VAR], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
231 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
232 fdefine([INT], [dnl
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
233 int arg_$][1;
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
234 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
235 fdefine([NUMBER], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
236 double arg_$][1;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
237 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
238 fdefine([OBJ], [dnl
663
974d98233eab Fix mis-using of arguments of OBJ() argument type
Thinker K.F. Li <thinker@branda.to>
parents: 660
diff changeset
239 $][3 *arg_$][1;
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
240 ])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
241 fdefine([ARRAY], [dnl
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
242 Handle<Value> arg_$][1;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
243 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
244 fdefine([STR], [dnl
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
245 char *arg_$][1;
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
246 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
247 fdefine([FUNC], [dnl
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
248 Handle<Function> arg_$][1;
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
249 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
250 fdefine([SELF], [])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
251 fdefine([ERR], [])dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
252 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
253
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
254 define([START_METHOD_ARG_TYPE_CHK], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
255 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
256 fdefine([INT], [ ||
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
257 !args[[i++]]->IsInt32()])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
258 fdefine([NUMBER], [ ||
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
259 !args[[i++]]->IsNumber()])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
260 fdefine([OBJ], [ ||
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
261 !args[[i++]]->IsObject()])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
262 fdefine([ARRAY], [ ||
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
263 !args[[i++]]->IsArray()])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
264 fdefine([STR], [ ||
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
265 !args[[i++]]->IsString()])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
266 fdefine([FUNC], [ ||
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
267 !args[[i++]]->IsFunction()])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
268 fdefine([SELF], [])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
269 fdefine([ERR], [])dnl
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
270 ])
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
271
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
272 define([START_TYPE_CHK], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
273 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
274 fdefine([INT], [$1->IsInt32()])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
275 fdefine([NUMBER], [$1->IsNumber()])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
276 fdefine([OBJ], [$1->IsObject()])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
277 fdefine([ARRAY], [$1->IsArray()])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
278 fdefine([STR], [$1->IsString()])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
279 fdefine([FUNC], [$1->IsFunction()])dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
280 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
281
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
282 define([START_METHOD_ARG_ASSIGN], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
283 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
284 fdefine([INT], [dnl
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
285 arg_$][1 = args[[i++]]->Int32Value();
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
286 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
287 fdefine([NUMBER], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
288 arg_$][1 = args[[i++]]->NumberValue();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
289 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
290 fdefine([OBJ], [dnl
663
974d98233eab Fix mis-using of arguments of OBJ() argument type
Thinker K.F. Li <thinker@branda.to>
parents: 660
diff changeset
291 arg_$][1 = ($][3 *)UNWRAP(args[[i++]]->ToObject());
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
292 if(arg_$][1 == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
293 THROW("Invalid argument");
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
294 ])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
295 fdefine([ARRAY], [dnl
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
296 arg_$][1 = args[[i++]];
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
297 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
298 fdefine([STR], [dnl
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
299 arg_$][1 = strdup(*String::Utf8Value(args[[i++]]->ToString()));
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
300 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
301 fdefine([FUNC], [dnl
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
302 arg_$][1 = args[[i++]].As<Function>();
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
303 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
304 fdefine([SELF], [])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
305 fdefine([ERR], [])dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
306 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
307
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
308 define([START_VALUE_ASSIGN], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
309 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
310 fdefine([INT], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
311 $1 = $2->Int32Value();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
312 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
313 fdefine([NUMBER], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
314 $1 = $2->NumberValue();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
315 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
316 fdefine([OBJ], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
317 $1 = ($][2 *)UNWRAP($2->ToObject());
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
318 if($1 == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
319 THROW("Invalid argument");
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
320 ])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
321 fdefine([ARRAY], [dnl
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
322 $1 = $2;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
323 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
324 fdefine([STR], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
325 $1 = strdup(*String::Utf8Value($2->ToString()));
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
326 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
327 fdefine([FUNC], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
328 $1 = $2.As<Function>();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
329 ])dnl
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
330 ])
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
331
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
332 define([START_METHOD_ARG_PASS], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
333 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
334 fdefine([INT], [arg_$][1])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
335 fdefine([NUMBER], [arg_$][1])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
336 fdefine([OBJ], [arg_$][1])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
337 fdefine([ARRAY], [arg_$][1])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
338 fdefine([STR], [arg_$][1])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
339 fdefine([FUNC], [arg_$][1])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
340 fdefine([SELF], [self])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
341 fdefine([ERR], [&_err])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
342 fdefine([VAL], [&_err])dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
343 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
344
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
345 define([START_METHOD_RET_VAL], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
346 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
347 fdefine([INT], [dnl
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
348 int _ret;
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
349 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
350 fdefine([NUMBER], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
351 double _ret;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
352 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
353 fdefine([OBJ], [dnl
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
354 $][2 *_ret;
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
355 ])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
356 fdefine([ARRAY], [dnl
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
357 Handle<Value> _ret;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
358 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
359 fdefine([STR], [dnl
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
360 char *_ret;
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
361 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
362 fdefine([FUNC], [dnl
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
363 Handle<Function> _ret;
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
364 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
365 fdefine([VAL], [dnl
670
f0b4fbcd1c51 Support encapsulated method & function return Handle<Value> directly
Thinker K.F. Li <thinker@branda.to>
parents: 669
diff changeset
366 Handle<Value> _ret;
f0b4fbcd1c51 Support encapsulated method & function return Handle<Value> directly
Thinker K.F. Li <thinker@branda.to>
parents: 669
diff changeset
367 ])dnl
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
368 ])
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
369
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
370 define([START_VAR], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
371 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
372 fdefine([INT], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
373 int $1;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
374 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
375 fdefine([NUMBER], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
376 double $1;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
377 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
378 fdefine([OBJ], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
379 $][2 *$1;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
380 ])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
381 fdefine([ARRAY], [dnl
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
382 Handle<Value> *$1;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
383 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
384 fdefine([STR], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
385 char *$1;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
386 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
387 fdefine([FUNC], [dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
388 Handle<Function> $1;
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
389 ])dnl
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
390 ])
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
391
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
392 define([START_METHOD_RET_ASSIGN], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
393 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
394 fdefine([INT], [_ret = (int)])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
395 fdefine([NUMBER], [_ret = (double)])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
396 fdefine([OBJ], [_ret = ($][2 *)])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
397 fdefine([ARRAY], [_ret = ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
398 fdefine([STR], [_ret = (char *)])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
399 fdefine([FUNC], [_ret = ])dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
400 fdefine([VAL], [_ret = ])dnl
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
401 ])
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
402
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
403 define([START_METHOD_RET], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
404 VARFRAME[]dnl
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
405 fdefine([INT], [
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
406 _ret_val = Integer::New(_ret);
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
407 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
408 fdefine([NUMBER], [
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
409 _ret_val = Number::New(_ret);
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
410 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
411 fdefine([OBJ], [
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
412 _ret_val = PROJ_PREFIX[]$][1[]_new(_ret);
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
413 ])dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
414 fdefine([ARRAY], [
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
415 _ret_val = _ret;
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
416 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
417 fdefine([STR], [
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
418 _ret_val = String::New(_ret);
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
419 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
420 fdefine([FUNC], [
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
421 _rt_val = _ret;
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
422 ])dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
423 fdefine([VAL], [
670
f0b4fbcd1c51 Support encapsulated method & function return Handle<Value> directly
Thinker K.F. Li <thinker@branda.to>
parents: 669
diff changeset
424 _rt_val = _ret;
f0b4fbcd1c51 Support encapsulated method & function return Handle<Value> directly
Thinker K.F. Li <thinker@branda.to>
parents: 669
diff changeset
425 ])dnl
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
426 ])
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
427
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
428 define([STOP_METHOD_ARG], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
429 UNVARFRAME[]dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
430 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
431
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
432 define([START_METHOD], [dnl
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
433 dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
434 dnl METHOD(name, func, arguments, cnt, ret_type, options)
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
435 dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
436 define([METHOD], [
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
437 VARFRAME[]dnl
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
438 dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
439 ifelse($][6, [], [], [dnl
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
440 foreach([ITER], ]$][6[, [EXPAND([fdefine]ITER)])dnl
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
441 ])dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
442 dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
443 static Handle<Value>
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
444 PROJ_PREFIX[]STRUCT_NAME[]_$][1(const Arguments &args) {
669
eeea1b593a2f Add handle scope for function and method generated
Thinker K.F. Li <thinker@branda.to>
parents: 668
diff changeset
445 HandleScope scope;
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
446 int i;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
447 int argc = args.Length();
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
448 Handle<Object> self = args.This();
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
449 STRUCT_TYPE *_self = (STRUCT_TYPE *)UNWRAP(self);
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
450 const char *_err = NULL;
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
451 foreach([ITER], $][3, [START_METHOD_ARG_VAR[]ITER[]STOP_METHOD_ARG])dnl
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
452 START_METHOD_RET_VAL[]$][5[]STOP_METHOD_ARG
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
453 Handle<Value> _ret_val;
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
454
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
455 if(_self == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
456 THROW("Invalid object");
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
457 if(argc != $][4)
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
458 THROW("Invalid number of arguments (!=$][4)");
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
459 i = 0;
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
460 if(0[]dnl
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
461 foreach([ITER], $][3, [START_METHOD_ARG_TYPE_CHK[]ITER[]STOP_METHOD_ARG]))
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
462 THROW("Invalid argument type");
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
463
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
464 i = 0;
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
465 foreach([ITER], $][3, [START_METHOD_ARG_ASSIGN[]ITER[]STOP_METHOD_ARG])dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
466
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
467 START_METHOD_RET_ASSIGN[]$][5[]STOP_METHOD_ARG[]$][2(_self[]foreach([ITER], $][3, [START_METHOD_ARG_PASS[], ITER[]STOP_METHOD_ARG]));
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
468 if(_err)
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
469 THROW(_err);
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
470 START_METHOD_RET[]$][5[]STOP_METHOD_ARG[]dnl
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
471 ifelse($][5, [], [
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
472 return Null();
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
473 ], [dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
474 dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
475 dnl Modify returned object
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
476 dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
477 ifdef([MOD], [
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
478 MOD[](self, _ret_val);
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
479 ])dnl
669
eeea1b593a2f Add handle scope for function and method generated
Thinker K.F. Li <thinker@branda.to>
parents: 668
diff changeset
480 scope.Close(_ret_val);
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
481 return _ret_val;
649
2030e5d9f7f7 Support return value for methodes of JS binding
Thinker K.F. Li <thinker@branda.to>
parents: 648
diff changeset
482 ])dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
483 }
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
484 UNVARFRAME[]dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
485 ])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
486 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
487
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
488 define([STOP_METHOD], [undefine([METHOD])])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
489
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
490 define([SET_METHOD], [dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
491 define([METHOD], [dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
492 SET(proto_temp, "$][1",
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
493 FunctionTemplate::New(PROJ_PREFIX[]STRUCT_NAME[]_$][1));
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
494 ])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
495 $1[]dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
496 undefine([METHOD])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
497 ])
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
498
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
499 define([DEF_GET_INDEX], [
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
500 static Handle<Value>
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
501 PROJ_PREFIX[]STRUCT_NAME[]_get_index(uint32_t index, const AccessorInfo &info) {
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
502 Handle<Object> self = info.This();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
503 STRUCT_TYPE *obj = (STRUCT_TYPE *)UNWRAP(self);
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
504 const char *_err = NULL;
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
505 START_METHOD_RET_VAL[]$2[]STOP_METHOD_ARG[]dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
506 Handle<Value> _ret_val;
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
507
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
508 if(obj == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
509 THROW("Invalid object");
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
510 _ret = $1(obj, self, index, &_err);
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
511 if(_err)
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
512 THROW(_err);
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
513 START_METHOD_RET[]$2[]STOP_METHOD_ARG[]dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
514 return _ret_val;
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
515 }
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
516 ])
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
517
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
518 define([DEF_SET_INDEX], [
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
519 static Handle<Value>
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
520 PROJ_PREFIX[]STRUCT_NAME[]_set_index(uint32_t index, Local<Value> value,
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
521 const AccessorInfo &info) {
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
522 Handle<Object> self = info.This();
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
523 STRUCT_TYPE *obj = (STRUCT_TYPE *)UNWRAP(self);
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
524 const char *_err = NULL;
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
525 START_VAR([in_value])[]$2[]STOP_METHOD_ARG[]dnl
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
526 START_METHOD_RET_VAL[]$2[]STOP_METHOD_ARG[]dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
527 Handle<Value> _ret_val;
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
528
740
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
529 if(obj == NULL)
00a8c8a9e157 Check if an object valid in gen_v8_binding.m4
Thinker K.F. Li <thinker@codemud.net>
parents: 682
diff changeset
530 THROW("Invalid object");
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
531 if(START_TYPE_CHK(value)[]![]$2[]STOP_METHOD_ARG)
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
532 THROW("Invalid value type");
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
533
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
534 START_VALUE_ASSIGN(in_value, value)[]$2[]STOP_METHOD_ARG[]dnl
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
535 _ret = $1(obj, self, index, in_value, &_err);
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
536 if(_err) THROW(_err);
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
537 START_METHOD_RET[]$2[]STOP_METHOD_ARG[]dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
538 return _ret_val;
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
539 }
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
540 ])
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
541
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
542 define([INSTALL_INDEX_FUNCTIONS],[dnl
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
543 define([FIRST], [$][1])dnl
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
544 ifdef([GET_INDEX], [ifdef([SET_INDEX], [dnl
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
545 inst_temp->SetIndexedPropertyHandler(PROJ_PREFIX[]STRUCT_NAME[]_get_index,
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
546 PROJ_PREFIX[]STRUCT_NAME[]_set_index);
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
547 ], [dnl
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
548 inst_temp->SetIndexedPropertyHandler(PROJ_PREFIX[]STRUCT_NAME[]_get_index);
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
549 ])])dnl
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
550 undefine([FIRST])dnl
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
551 ])
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
552
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
553 define([CTOR_INTERNAL], [dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
554 int argc = args.Length();
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
555 Handle<Object> self = args.This();
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
556 $4 *obj;
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
557 foreach([ITER], $2, [START_METHOD_ARG_VAR[]ITER[]STOP_METHOD_ARG])dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
558 int i;
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
559
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
560 if(argc != $3)
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
561 THROW("Invalid number of arguments (!=$][4)");
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
562 i = 0;
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
563 if(0]dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
564 [foreach([ITER], $2, [START_METHOD_ARG_TYPE_CHK[]ITER[]STOP_METHOD_ARG]))
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
565 THROW("Invalid argument type");
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
566
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
567 i = 0;
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
568 foreach([ITER], $2, [START_METHOD_ARG_ASSIGN[]ITER[]STOP_METHOD_ARG])dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
569
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
570 define([SEP], [])dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
571 obj = ($4 *)$1(foreach([ITER], $2, [START_METHOD_ARG_PASS[]SEP[]ITER[]STOP_METHOD_ARG[]define([SEP], [, ])]));[]undefine([SEP])
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
572
678
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
573 WRAP(self, obj);]
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
574 ifdef([STMOD], [
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
575 STMOD(self, obj);
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
576 ])dnl
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
577 )
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
578
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
579 dnl
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
580 dnl STRUCT(struct_name, struct_type, member_vars, methods, options)
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
581 dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
582 define([STRUCT], [dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
583 define([STRUCT_NAME], [$1])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
584 define([STRUCT_TYPE], [$2])dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
585 dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
586 VARFRAME[]dnl
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
587 ifelse([$5], [], [], [dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
588 foreach([ITER], $5, [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
589 EXPAND([fdefine]ITER)[]dnl
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
590 ])dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
591 ])dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
592 dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
593 [
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
594 /* **************************************************
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
595 * STRUCT: $1
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
596 * Generated by gen_v8_binding.m4
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
597 */
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
598 static Handle<Value>
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
599 ]PROJ_PREFIX[$1(const Arguments &args) {
664
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
600 ]ifdef([CTOR], [EXPAND([CTOR_INTERNAL](EXPAND([UNQUOTE]CTOR), [$2]))])dnl
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
601 return Null();
08fd45d119c9 Binding generator supports self-init constructor function
Thinker K.F. Li <thinker@branda.to>
parents: 663
diff changeset
602 [}
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
603
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
604 static Persistent<FunctionTemplate> ]PROJ_PREFIX[$1][_temp;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
605
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
606 static Handle<Value>
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
607 ]PROJ_PREFIX[$1][_new($2 *data) {
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
608 Handle<Object> obj;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
609 Handle<Function> func;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
610
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
611 func = ]PROJ_PREFIX[$1][_temp->GetFunction();
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
612 obj = func->NewInstance();
678
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
613 WRAP(obj, data);]
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
614 ifdef([STMOD], [
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
615 STMOD[(obj, data)];
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
616 ])dnl
40ba8915edc7 Support modifier function after creating a new object
Thinker K.F. Li <thinker@branda.to>
parents: 677
diff changeset
617 [ return obj;
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
618 }
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
619 ]dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
620 foreach([ITER], ($3), [START_ACCESSOR ITER STOP_ACCESSOR])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
621 foreach([ITER], ($4), [START_METHOD ITER STOP_METHOD])dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
622 ifdef([GET_INDEX], [EXPAND([DEF_GET_INDEX]GET_INDEX)])dnl
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
623 ifdef([SET_INDEX], [EXPAND([DEF_SET_INDEX]SET_INDEX)])dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
624 [
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
625 static void
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
626 ]PROJ_PREFIX[$1][_init(void) {
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
627 Handle<FunctionTemplate> func_temp;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
628 Handle<ObjectTemplate> inst_temp;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
629 Handle<ObjectTemplate> proto_temp;
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
630
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
631 func_temp = FunctionTemplate::New(]PROJ_PREFIX[$1);
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
632 func_temp->SetClassName(String::New("]STRUCT_NAME["));
682
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
633 ]ifdef([INHERIT], [dnl
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
634 func_temp->Inherit(]PROJ_PREFIX[]INHERIT[_temp);
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
635 ])dnl
4a38e571cfce Add ARRAY argument type and INHERIT supporting for STRUCT
Thinker K.F. Li <thinker@branda.to>
parents: 678
diff changeset
636 [ inst_temp = func_temp->InstanceTemplate();
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
637 inst_temp->SetInternalFieldCount(1);
809
e21ccbc4afb1 Fix a typo
Thinker K.F. Li <thinker@codemud.net>
parents: 740
diff changeset
638 ]foreach([ITER], ($3), [SET_ACCESSOR(ITER)])dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
639 INSTALL_INDEX_FUNCTIONS[]dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
640
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
641 proto_temp = func_temp->PrototypeTemplate();
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
642 foreach([ITER], ($4), [SET_METHOD(ITER)])dnl
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
643
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
644 PROJ_PREFIX[$1][_temp = Persistent<FunctionTemplate>::New(func_temp);
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
645 }]dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
646 dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
647 UNVARFRAME[]dnl
659
d4aa1cce0af7 Supporting setter/Getter of index of objects for JS
Thinker K.F. Li <thinker@branda.to>
parents: 657
diff changeset
648 dnl
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
649 ])
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
650
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
651 dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
652 dnl FUNCTION(func_name, real_func, arguments, arguement_count,
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
653 dnl return_type, options)
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
654 dnl
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
655 define([FUNCTION], [dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
656 dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
657 VARFRAME[]dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
658 ifelse($6, [], [], [dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
659 foreach([ITER], $6, [EXPAND([fdefine]ITER)])dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
660 ])dnl
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
661 dnl
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
662 /* **************************************************
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
663 * [FUNCTION]: $1
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
664 * Generated by gen_v8_binding.m4
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
665 */
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
666 static Handle<Value>
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
667 PROJ_PREFIX[]$1(const Arguments &args) {
669
eeea1b593a2f Add handle scope for function and method generated
Thinker K.F. Li <thinker@branda.to>
parents: 668
diff changeset
668 HandleScope scope;
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
669 int argc = args.Length();
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
670 int i;
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
671 const char *_err = NULL;
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
672 foreach([ITER], ($3), [START_METHOD_ARG_VAR[]ITER[]STOP_METHOD_ARG])dnl
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
673 START_METHOD_RET_VAL[]$5[]STOP_METHOD_ARG[]dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
674 Handle<Value> _ret_val;
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
675
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
676 if(argc != $4)
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
677 THROW("Invalid number of arguments (!=$][4)");
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
678 i = 0;
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
679 if(0]dnl
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
680 [foreach([ITER], ($3), [START_METHOD_ARG_TYPE_CHK[]ITER[]STOP_METHOD_ARG]))
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
681 THROW("Invalid argument type");
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
682
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
683 i = 0;
651
aa52883534fc Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents: 650
diff changeset
684 foreach([ITER], ($3), [START_METHOD_ARG_ASSIGN[]ITER[]STOP_METHOD_ARG])dnl
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
685
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
686 define([SEP], [])dnl
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
687 START_METHOD_RET_ASSIGN[]$5[]STOP_METHOD_ARG[]$2(foreach([ITER], ($3), [START_METHOD_ARG_PASS[]SEP[]ITER[]STOP_METHOD_ARG[]define([SEP], [, ])]));[]undefine([SEP])
660
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
688 if(_err)
dde4e3cc9529 Enabling error handling on binding
Thinker K.F. Li <thinker@branda.to>
parents: 659
diff changeset
689 THROW(_err);
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
690 START_METHOD_RET[]$][5[]STOP_METHOD_ARG[]dnl
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
691 ifelse($][5, [], [
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
692 return Null();
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
693 ], [dnl
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
694 dnl
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
695 dnl Modify returned object
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
696 dnl
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
697 ifdef([MOD], [
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
698 MOD[](self, _ret_val);
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
699 ])dnl
669
eeea1b593a2f Add handle scope for function and method generated
Thinker K.F. Li <thinker@branda.to>
parents: 668
diff changeset
700 scope.Close(_ret_val);
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
701 return _ret_val;
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
702 ])dnl
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
703 }
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
704 static Persistent<FunctionTemplate> PROJ_PREFIX[]$1[]_temp;
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
705
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
706 static void
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
707 PROJ_PREFIX[]$1[]_init(void) {
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
708 Handle<FunctionTemplate> func_temp;
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
709
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
710 func_temp = FunctionTemplate::New(PROJ_PREFIX[]$1);
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
711 PROJ_PREFIX[]$1[]_temp = Persistent<FunctionTemplate>::New(func_temp);
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
712 }
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
713 dnl
677
efa666d118e5 Use variable frame to maintain macros
Thinker K.F. Li <thinker@branda.to>
parents: 674
diff changeset
714 UNVARFRAME[]dnl
668
916dc9723086 Fix issue of return value of code generated
Thinker K.F. Li <thinker@branda.to>
parents: 664
diff changeset
715 dnl
650
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
716 ])
123e7eeff10c Generate JS binding for a function
Thinker K.F. Li <thinker@branda.to>
parents: 649
diff changeset
717
648
e13dbfd37eab JS binding generator and observer definition with the generator
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
718 divert([])dnl