-
Notifications
You must be signed in to change notification settings - Fork 6
/
main.c
84 lines (64 loc) · 1.48 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <webassembly.h>
// macro used to export functions to WebAssembly
export int add(int a, int b) {
return a + b;
}
// allocate/deallocate exports are exactly what you would expect:
export void *allocate(int size) {
return malloc(size);
}
export void deallocate(void *ptr) {
free(ptr);
}
export char *say(char *hello) {
char *phrase = calloc(strlen(hello) + 9, 1);
strcat(phrase, hello);
strcat(phrase, ", World!");
return phrase;
}
export int get_sum(int arr[], size_t length) {
int i;
int sum = 0;
for (i = 0; i < length; ++i) {
sum += arr[i];
}
return sum;
}
export int *get_pointer() {
int *ptr = malloc(sizeof *ptr);
*ptr = 123;
return ptr;
}
export int pass_pointer(int *ptr) {
return *ptr;
}
struct Person {
char *name;
uint8_t age;
uint32_t favorite_number;
};
export struct Person *get_person() {
struct Person *p = malloc(sizeof(struct Person));
p->name = "Jean-Luc Picard";
p->age = 61;
p->favorite_number = 1701;
return p;
}
export char *person_facts(struct Person *p) {
char *about = calloc(strlen(p->name) + 40, 1);
strcat(about, p->name);
if (p->age > p->favorite_number) {
strcat(about, " is older than his favorite number.");
} else {
strcat(about, " is younger than his favorite number.");
}
return about;
}
extern void rotate();
extern int get_input_value(char *);
export void barrel_roll() {
rotate();
}
export int multiply_input(char *dom_selector) {
return get_input_value(dom_selector) * 2;
}