varargs: make printf working
[mate.git] / ffi / native.c
1 #include <stdio.h>
2
3 static char ascii(char s) {
4         if(s < 0x20) return '.';
5         if(s > 0x7E) return '.';
6         return s;
7 }
8
9 void hexdump(void *d, int len) {
10         unsigned char *data;
11         int i, off;
12         data = (unsigned char*)d;
13         for (off=0; off<len; off += 16) {
14                 printf("%08x  ",off);
15                 for(i=0; i<16; i++)
16                         if((i+off)>=len) printf("   ");
17                         else printf("%02x ",data[off+i]);
18
19                 printf(" ");
20                 for(i=0; i<16; i++)
21                         if((i+off)>=len) printf(" ");
22                         else printf("%c",ascii(data[off+i]));
23                 printf("\n");
24         }
25 }
26
27 void tests_Native1__printSomething____V(void)
28 {
29         printf("printSomething: woot \\o/\n");
30 }
31
32 void tests_Native1__printSomething___I_V(int a)
33 {
34         printf("printSomething: 0x%08x\n", a);
35 }
36
37 void tests_Instance5__printX___I_V(int a)
38 {
39         printf("printX: 0x%08x\n", a);
40 }
41
42 void java_io_PrintStream__printf___I_V(int a)
43 {
44         printf("printstream: 0x%08x\n", a);
45 }
46
47 void java_io_PrintStream__println___Ljava_lang_String__V(const char *a)
48 {
49         printf("%s\n", a);
50 }
51
52 struct integer {
53         unsigned int method_table_ptr;
54         int value;
55 };
56
57 void java_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V
58         (struct integer *a1, const char *fmt)
59 {
60         printf(fmt, a1->value);
61 }
62
63 void java_io_PrintStream__printf_2___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object__V
64         (struct integer *a2, struct integer *a1, const char *fmt)
65 {
66         printf(fmt, a1->value, a2->value);
67 }
68
69 void
70 java_io_PrintStream__printf_3___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
71         (struct integer *a3, struct integer *a2, struct integer *a1, const char *fmt)
72 {
73         printf(fmt, a1->value, a2->value, a3->value);
74 }
75
76 void java_io_PrintStream__printf_4___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
77         (struct integer *a4, struct integer *a3, struct integer *a2, struct integer *a1, const char *fmt)
78 {
79         printf(fmt, a1->value, a2->value, a3->value, a4->value);
80 }
81
82 void java_io_PrintStream__printf_5___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
83         (struct integer *a5, struct integer *a4, struct integer *a3, struct integer *a2, struct integer *a1, const char *fmt)
84 {
85         printf(fmt, a1->value, a2->value, a3->value, a4->value, a5->value);
86 }