v/vlib/v/gen/tests/1.c

278 lines
4.6 KiB
C

typedef enum {
Color_red, // 0
Color_green, // 1
Color_blue, // 2
} Color;
struct Two {
};
struct User {
int age;
string name;
};
struct One {
Two two;
};
// multi return structs
typedef struct {
int arg0;
string arg1;
} multi_return_int_string;
// end of definitions #endif
#define _const_pi 3
int _const_pi2; // inited later
string int_str(int* x) { return tos3("TODO_str"); }
void foo(int a);
void User_inc_age(User* u, int n);
int get_int(string a);
bool get_bool();
int get_int2();
void myuser();
multi_return_int_string multi_return();
void variadic(varg_int a);
void ensure_cap(int required, int cap);
void println(string s);
void matches();
#define _const_path_sep 10
void end();
int function1();
void foo(int a);
void init_user();
User get_user();
void puts(string s);
void function2();
void init_array();
#define _const_localmod__pub_int_const 20
void localmod__pub_foo();
int localmod__get_int_10();
// variadic structs
struct varg_int {
int len;
int args[0];
};
// >> typeof() support for sum types
// << typeof() support for sum types
//
int main(int argc, char** argv) {
_vinit();
int a = 10;
a++;
int negative = -a;
2 < 3;
a == 1;
a++;
foo(3);
int ak = 10;
int mypi = _const_pi;
Color color = Color_red;
localmod__pub_foo();
int ten = localmod__get_int_10();
println(int_str(_const_localmod__pub_int_const));
int g = ((int)(3.0));
byte* bytes = ((byte*)(0));
User* user_ptr = (User*)memdup(&(User){ .age = 0,
.name = tos3(""),
}, sizeof(User));
return 0;
}
void foo(int a) {
while (true) {
}
for (int i = 0;
i < 10; i++) {
}
array_int nums = new_array_from_c_array(3, 3, sizeof(int), (int[3]){
1, 2, 3,
});
array_int nums2 = array_slice(nums, 0, 2);
array_int nums3 = array_slice(nums, 1, 2);
array_int nums4 = array_slice(nums, 1, nums.len);
int number = (*(int*)array_get(nums, 0));
array_set(&nums, 1, &(int[]) { 10 });
array_bool bools = new_array_from_c_array(2, 2, sizeof(bool), (bool[2]){
true, false,
});
array_User users = new_array_from_c_array(1, 1, sizeof(User), (User[1]){
(User){
.age = 0,
.name = tos3(""),
},
});
bool b = (*(bool*)array_get(bools, 0));
array_string mystrings = new_array_from_c_array(2, 2, sizeof(string), (string[2]){
tos3("a"), tos3("b"),
});
string s = (*(string*)array_get(mystrings, 0));
int x = 0;
x = get_int2();
int n = get_int2();
bool q = true || false;
bool b2 = (*(bool*)array_get(bools, 0)) || true;
bool b3 = get_bool() || true;
int f = *(int*)array_first(nums);
array_int c = array_clone(&nums);
string d = tos3("d");
println(string_add(s, d));
}
void User_inc_age(User* u, int n) {
printf("%d", u->age);
u->age += n;
}
int get_int(string a) {
return 10;
}
bool get_bool() {
return true;
}
int get_int2() {
string a = tos3("hello");
return get_int(a);
}
void myuser() {
int x = 1;
int q = x | 0x1004;
User user = (User){
.age = 30,
.name = tos3(""),
};
int age = user.age + 1;
int boo = 2;
int boo2 = boo + 1;
bool b = age > 0;
bool b2 = user.age > 0;
User user2 = (User){
.age = 20,
.name = tos3(""),
};
user2.age = 20 + boo;
}
multi_return_int_string multi_return() {
return (multi_return_int_string){.arg0=4,.arg1=tos3("four")};
}
void variadic(varg_int a) {
int x = _const_path_sep;
int y = (true ? 1 : 0);
}
void ensure_cap(int required, int cap) {
if (required < cap) {
return;
}
}
void println(string s) {
}
void matches() {
int a = 100;
if (a == 10) {
println(tos3("10"));
}
else if (a == 20) {
int k = a + 1;
}
else {
}
;
string x = (a == 10) ? tos3("ten") : (a == 30) ? tos3("thirty") : tos3("unknown");
int xx = (a == 10) ? 100 : (a == 30) ? 300 : 0;
println((a == 10) ? tos3("ten") : tos3("not ten"));
}
void end() {
int i = 2;
int key = 10;
bool x = i != -1 && key == 10;
int e = 2 + 3 * 4;
}
int function1() {
int a = 10 + 1;
int b = a + 1;
return 0;
}
void foo(int a) {
}
void init_user() {
User user = (User){
.name = tos3("Bob"),
.age = 0,
};
}
User get_user() {
User user = (User){
.age = 0,
.name = tos3(""),
};
return user;
}
void puts(string s) {
}
void function2() {
int x = 0;
f64 f = 10.1;
string s = tos3("hi");
int m = 10;
x += 10;
x += 1;
m += 2;
function1();
if (true) {
foo(10);
x += 8;
}
if (false) {
foo(1);
} else {
puts(tos3("else"));
foo(100);
}
while (true) {
init_user();
}
bool e = 1 + 2 > 0;
bool e2 = 1 + 2 < 0;
int j = 0;
}
void init_array() {
array_int nums = new_array_from_c_array(3, 3, sizeof(int), (int[3]){
4, 2, 3,
});
}
void localmod__pub_foo() {
int a = 10;
}
int localmod__get_int_10() {
return 10;
}
void _vinit() {
_const_pi2 = _const_pi;
}