Skip to content

Commit 54306e1

Browse files
added constructor statemnts
1 parent e597bc5 commit 54306e1

File tree

6 files changed

+285
-155
lines changed

6 files changed

+285
-155
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
prompt*
22
release
33
teste.c
4+
.idea
45
test.c
56
test.js
67
a.out.js

src/object/em_js.object_cal.c

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
//silver_chain_scope_start
2+
//mannaged by silver chain: https://github.com/OUIsolutions/SilverChain
3+
#include "../imports/imports.macro.h"
4+
//silver_chain_scope_end
5+
//
6+
// Created by mateus on 06/08/25.
7+
//
8+
9+
EM_JS(c2wasm_js_var,c2wasm_call_object_prop,(c2wasm_js_var stack_index, const char *prop_name,c2wasm_js_var args),{
10+
let object = window.c2wasm_stack[stack_index];
11+
let prop_name_formatted = window.c2wasm_get_string(prop_name);
12+
let arguments_callback = null;
13+
if(args < 0){
14+
arguments_callback = [];
15+
}
16+
else{
17+
arguments_callback = window.c2wasm_stack[args];
18+
if(!Array.isArray(arguments_callback)){
19+
arguments_callback = [arguments_callback];
20+
}
21+
}
22+
let result = null;
23+
try{
24+
result = object[prop_name_formatted](...arguments_callback);
25+
}catch(error){
26+
result = error;
27+
}
28+
29+
if(result == false){
30+
return window.c2wasm_false;
31+
}
32+
if(result == true){
33+
return window.c2wasm_true;
34+
}
35+
if(result == null){
36+
return window.c2wasm_null;
37+
}
38+
if(result == undefined){
39+
return window.c2wasm_undefined;
40+
}
41+
let created_index = window.c2wasm_get_stack_point();
42+
window.c2wasm_stack[created_index] = result;
43+
return created_index;
44+
});
45+
46+
EM_JS(c2wasm_js_var,c2wasm_call_object_constructor,(c2wasm_js_var stack_index, const char *prop_name,c2wasm_js_var args),{
47+
let object = window.c2wasm_stack[stack_index];
48+
let prop_name_formatted = window.c2wasm_get_string(prop_name);
49+
let arguments_callback = null;
50+
if(args < 0){
51+
arguments_callback = [];
52+
}
53+
else{
54+
arguments_callback = window.c2wasm_stack[args];
55+
if(!Array.isArray(arguments_callback)){
56+
arguments_callback = [arguments_callback];
57+
}
58+
}
59+
let result = null;
60+
try{
61+
result = new object[prop_name_formatted](...arguments_callback);
62+
}catch(error){
63+
result = error;
64+
}
65+
66+
if(result == false){
67+
return window.c2wasm_false;
68+
}
69+
if(result == true){
70+
return window.c2wasm_true;
71+
}
72+
if(result == null){
73+
return window.c2wasm_null;
74+
}
75+
if(result == undefined){
76+
return window.c2wasm_undefined;
77+
}
78+
let created_index = window.c2wasm_get_stack_point();
79+
window.c2wasm_stack[created_index] = result;
80+
return created_index;
81+
});
82+
83+
84+
85+
#ifdef C2WASM_ALLOW_ASYNC
86+
87+
88+
EM_ASYNC_JS(c2wasm_js_var,await_c2wasm_call_object_prop,(c2wasm_js_var stack_index, const char *prop_name,c2wasm_js_var args),{
89+
let object = window.c2wasm_stack[stack_index];
90+
let prop_name_formatted = window.c2wasm_get_string(prop_name);
91+
let arguments_callback = null;
92+
if(args < 0){
93+
arguments_callback = [];
94+
}
95+
else{
96+
arguments_callback = window.c2wasm_stack[args];
97+
if(!Array.isArray(arguments_callback)){
98+
arguments_callback = [arguments_callback];
99+
}
100+
}
101+
let result = null;
102+
try{
103+
result = await object[prop_name_formatted](...arguments_callback);
104+
}catch(error){
105+
result = error;
106+
}
107+
108+
if(result == false){
109+
return window.c2wasm_false;
110+
}
111+
if(result == true){
112+
return window.c2wasm_true;
113+
}
114+
if(result == null){
115+
return window.c2wasm_null;
116+
}
117+
if(result == undefined){
118+
return window.c2wasm_undefined;
119+
}
120+
let created_index = window.c2wasm_get_stack_point();
121+
window.c2wasm_stack[created_index] = result;
122+
return created_index;
123+
});
124+
#endif // C2WASM_ALLOW_ASYNC

src/object/em_js.object_get.c

Lines changed: 0 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -100,80 +100,3 @@ EM_JS(c2wasm_js_var , c2wasm_get_object_prop_any,(c2wasm_js_var stack_index, con
100100
});
101101

102102

103-
EM_JS(c2wasm_js_var,c2wasm_call_object_prop,(c2wasm_js_var stack_index, const char *prop_name,c2wasm_js_var args),{
104-
let object = window.c2wasm_stack[stack_index];
105-
let prop_name_formatted = window.c2wasm_get_string(prop_name);
106-
let arguments_callback = null;
107-
if(args < 0){
108-
arguments_callback = [];
109-
}
110-
else{
111-
arguments_callback = window.c2wasm_stack[args];
112-
if(!Array.isArray(arguments_callback)){
113-
arguments_callback = [arguments_callback];
114-
}
115-
}
116-
let result = null;
117-
try{
118-
result = object[prop_name_formatted](...arguments_callback);
119-
}catch(error){
120-
result = error;
121-
}
122-
123-
if(result == false){
124-
return window.c2wasm_false;
125-
}
126-
if(result == true){
127-
return window.c2wasm_true;
128-
}
129-
if(result == null){
130-
return window.c2wasm_null;
131-
}
132-
if(result == undefined){
133-
return window.c2wasm_undefined;
134-
}
135-
let created_index = window.c2wasm_get_stack_point();
136-
window.c2wasm_stack[created_index] = result;
137-
return created_index;
138-
});
139-
140-
#ifdef C2WASM_ALLOW_ASYNC
141-
142-
143-
EM_ASYNC_JS(c2wasm_js_var,await_c2wasm_call_object_prop,(c2wasm_js_var stack_index, const char *prop_name,c2wasm_js_var args),{
144-
let object = window.c2wasm_stack[stack_index];
145-
let prop_name_formatted = window.c2wasm_get_string(prop_name);
146-
let arguments_callback = null;
147-
if(args < 0){
148-
arguments_callback = [];
149-
}
150-
else{
151-
arguments_callback = window.c2wasm_stack[args];
152-
if(!Array.isArray(arguments_callback)){
153-
arguments_callback = [arguments_callback];
154-
}
155-
}
156-
let result = null;
157-
try{
158-
result = await object[prop_name_formatted](...arguments_callback);
159-
}catch(error){
160-
result = error;
161-
}
162-
163-
if(result == false){
164-
return window.c2wasm_false;
165-
}
166-
if(result == true){
167-
return window.c2wasm_true;
168-
}
169-
if(result == null){
170-
return window.c2wasm_null;
171-
}
172-
if(result == undefined){
173-
return window.c2wasm_undefined;
174-
}
175-
let created_index = window.c2wasm_get_stack_point();
176-
window.c2wasm_stack[created_index] = result;
177-
return created_index;
178-
});
179-
#endif // C2WASM_ALLOW_ASYNC

src/vars/em_js.vars_call.c

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
//silver_chain_scope_start
2+
//mannaged by silver chain: https://github.com/OUIsolutions/SilverChain
3+
#include "../imports/imports.macro.h"
4+
//silver_chain_scope_end
5+
//
6+
// Created by mateus on 06/08/25.
7+
//
8+
EM_JS(c2wasm_js_var, c2wasm_call_var, (c2wasm_js_var stack_index, c2wasm_js_var args), {
9+
let func = window.c2wasm_stack[stack_index];
10+
let arguments_callback = null;
11+
if(args < 0){
12+
arguments_callback = [];
13+
}
14+
else{
15+
arguments_callback = window.c2wasm_stack[args];
16+
if(!Array.isArray(arguments_callback)){
17+
arguments_callback = [arguments_callback];
18+
}
19+
}
20+
let result = null;
21+
try{
22+
result = func(...arguments_callback);
23+
}catch(error){
24+
result = error;
25+
}
26+
27+
if(result == false){
28+
return window.c2wasm_false;
29+
}
30+
if(result == true){
31+
return window.c2wasm_true;
32+
}
33+
if(result == null){
34+
return window.c2wasm_null;
35+
}
36+
if(result == undefined){
37+
return window.c2wasm_undefined;
38+
}
39+
let created_index = window.c2wasm_get_stack_point();
40+
window.c2wasm_stack[created_index] = result;
41+
return created_index;
42+
});
43+
44+
#ifdef C2WASM_ALLOW_ASYNC
45+
46+
EM_ASYNC_JS(c2wasm_js_var, await_c2wasm_call_var, (c2wasm_js_var stack_index, c2wasm_js_var args), {
47+
let func = window.c2wasm_stack[stack_index];
48+
let arguments_callback = null;
49+
if(args < 0){
50+
arguments_callback = [];
51+
}
52+
else{
53+
arguments_callback = window.c2wasm_stack[args];
54+
if(!Array.isArray(arguments_callback)){
55+
arguments_callback = [arguments_callback];
56+
}
57+
}
58+
let result = null;
59+
try{
60+
result = await func(...arguments_callback);
61+
}catch(error){
62+
result = error;
63+
}
64+
65+
if(result == false){
66+
return window.c2wasm_false;
67+
}
68+
if(result == true){
69+
return window.c2wasm_true;
70+
}
71+
if(result == null){
72+
return window.c2wasm_null;
73+
}
74+
if(result == undefined){
75+
return window.c2wasm_undefined;
76+
}
77+
let created_index = window.c2wasm_get_stack_point();
78+
window.c2wasm_stack[created_index] = result;
79+
return created_index;
80+
});
81+
82+
#endif // C2WASM_ALLOW_ASYNC
83+
84+
EM_JS(c2wasm_js_var, c2wasm_call_var_constructor, (c2wasm_js_var stack_index, c2wasm_js_var args), {
85+
let constructor = window.c2wasm_stack[stack_index];
86+
let arguments_callback = null;
87+
if(args < 0){
88+
arguments_callback = [];
89+
}
90+
else{
91+
arguments_callback = window.c2wasm_stack[args];
92+
if(!Array.isArray(arguments_callback)){
93+
arguments_callback = [arguments_callback];
94+
}
95+
}
96+
let result = null;
97+
try{
98+
result = new constructor(...arguments_callback);
99+
}catch(error){
100+
result = error;
101+
}
102+
103+
if(result == false){
104+
return window.c2wasm_false;
105+
}
106+
if(result == true){
107+
return window.c2wasm_true;
108+
}
109+
if(result == null){
110+
return window.c2wasm_null;
111+
}
112+
if(result == undefined){
113+
return window.c2wasm_undefined;
114+
}
115+
let created_index = window.c2wasm_get_stack_point();
116+
window.c2wasm_stack[created_index] = result;
117+
return created_index;
118+
});
119+
120+
#ifdef C2WASM_ALLOW_ASYNC
121+
122+
EM_ASYNC_JS(c2wasm_js_var, await_c2wasm_call_var_constructor, (c2wasm_js_var stack_index, c2wasm_js_var args), {
123+
let constructor = window.c2wasm_stack[stack_index];
124+
let arguments_callback = null;
125+
if(args < 0){
126+
arguments_callback = [];
127+
}
128+
else{
129+
arguments_callback = window.c2wasm_stack[args];
130+
if(!Array.isArray(arguments_callback)){
131+
arguments_callback = [arguments_callback];
132+
}
133+
}
134+
let result = null;
135+
try{
136+
result = await new constructor(...arguments_callback);
137+
}catch(error){
138+
result = error;
139+
}
140+
141+
if(result == false){
142+
return window.c2wasm_false;
143+
}
144+
if(result == true){
145+
return window.c2wasm_true;
146+
}
147+
if(result == null){
148+
return window.c2wasm_null;
149+
}
150+
if(result == undefined){
151+
return window.c2wasm_undefined;
152+
}
153+
let created_index = window.c2wasm_get_stack_point();
154+
window.c2wasm_stack[created_index] = result;
155+
return created_index;
156+
});
157+
158+
#endif // C2WASM_ALLOW_ASYNC

0 commit comments

Comments
 (0)