Move the sources to trunk
[opencv] / apps / Hawk / CVEiCL / EiC / src / main.c
1 /* this file is for creating a version of EiC which
2  *  does not link to its implementation of the
3  *  standard C library nor does it use readline.
4  *
5  *
6  * To build this version: 
7  *              
8  *              make -f makefile.ppc 
9  *
10  *  which makes the executabe seic, (small eic) and seic.sr (an S-record)
11  *
12  */
13
14
15 #include <stdio.h>
16 #include <stdlib.h>
17 #include <string.h>
18 #include "eic.h"
19 #include "../module/stdClib/src/stdClib2eic.h" 
20 #include "preproc.h"
21
22 #define str(x)  #x
23 #define xstr(x) str(x)
24
25 #ifdef POWERPC
26 void prs(char *str);
27 val_t eic_gets(void);
28 val_t eic_puts(void);
29 val_t eic_getch(void);
30 val_t eic_putch(void);
31 val_t eic_getchq(void);
32 val_t eic_in(void);
33 val_t eic_out(void);
34 val_t eic_load(void);
35
36 extern char *startstr;
37
38 static char loadstring[4096]="
39
40 void puts(char *str);
41 char *gets(char *str);
42 int getch(void);
43 void putch(int ch);
44 int getchq(void);
45 int in(unsigned long addr);
46 void out(unsigned char val, unsigned long addr);
47 int load(char *str);
48 int printf(const char *fmt, ...);
49 int sprintf(char *buf, const char * fmt, ...);
50 int scanf(const char *fmt, ...);
51 int sscanf(const char *str,const char *fmt, ...);
52
53 typedef unsigned size_t;
54
55 void *memmove(void * dst, const void * src , size_t n);
56 char *strcpy(char * dst, const char * src);
57 char *strncpy(char * dst, const char * src, size_t n);
58 char *strcat(char * s1, const char * s2);
59 char *strncat(char * s1, const char *s2, size_t n);
60 int memcmp(const void * s1, const void * s2, size_t n);
61 int strcmp(const char * s1, const char * s2);
62 int strcoll(const char * s1, const char * s2);
63 int strncmp(const char * s1, const char *s2, size_t n);
64 size_t strxfrm(char *dst, const char * src, size_t n);
65 void *memchr(const void *s, int c, size_t n);
66 char *strchr(const char *s, int c);
67 size_t strcspn(const char *s, const char *reject);
68 char *strpbrk(const char *s, const char *accept);
69 char *strrchr(const char *s, int c);
70 size_t strspn(const char *s, const char *accept);
71 char *strstr(const char *haystack, const char *needle);
72 char *strtok(char *s, const char *delim);
73 void *memset(void *s, int c, size_t n);
74 char *strerror(int n);
75 size_t strlen(const char *s);
76 char * strrev(char * s);
77
78 #define RAND_MAX 32767
79 #define EXIT_FAILURE 1
80 #define EXIT_SUCCESS 0
81 #define MB_CUR_MAX 1
82
83 typedef struct { int quot, rem; }div_t;
84
85 typedef struct { long quot, rem; }ldiv_t;
86
87 div_t div(int numer, int denom);
88 ldiv_t ldiv(long int numer, long int denom);
89 void * malloc(size_t n);
90 void * calloc(size_t x, size_t y);
91 void * realloc(void * ptr, size_t n);
92 #define  free(x)  (free)(&(x));
93 void  (free)(void *ptr);
94 #define strtoul(x,y,z) strtol(x,y,z)
95 int rand(void);
96 void srand(unsigned int seed);
97 double strtod(const char *str, char **endptr);
98 long strtol(const char *str, char **endptr,int base);
99
100 int atoi(const char *s);
101 double atof(const char *str);
102 long atol(const char *s);
103 void abort(void);
104 char * _itoa(int n,char *str, int radix, int mod);
105 char * _ltoa(int n,char *str, int radix, int mod);
106 char *fftoa(double d, char *str, int p, char type, int trunc);
107 #define itoa(x,y,z)     _itoa(x,y,z,1)
108 #define utoa(x,y,z)     _itoa(x,y,z,2)
109 #define ltoa(x,y,z)     _ltoa(x,y,z,1)
110 #define ultoa(x,y,z)    _ltoa(x,y,z,2)
111
112
113 double acos(double a);
114 double asin(double a);
115 double atan(double a);
116 double atan2(double a, double b);
117 double cos(double a);
118 double sin(double a);
119 double tan(double a);
120 double cosh(double a);
121 double sinh(double a);
122 double tanh(double a);
123 double exp(double a);
124 double frexp(double a, int * b);
125 double ldexp(double a, int b);
126 double log(double a);
127 double log10(double a);
128 double modf(double a, double *b);
129 double pow(double a, double b);
130 double sqrt(double a);
131 double ceil(double a);
132 double fabs(double a);
133 double floor(double a);
134 double fmod(double a, double b);
135 puts(\"\\nDone loading prototypes...\");
136 ";
137
138
139 #endif
140
141 int  main(int argc, char ** argv)
142 {
143
144     EiC_init_EiC();
145
146     /* the macro PLATFORM 
147      * is passed in by the 
148      * compiler
149      */
150
151     dodefine("_EiC");
152     dodefine(&(xstr(PLATFORM)[1]));
153
154     #ifdef PPCLIB
155     prs("Starting EiC...\n");
156     setvbuf(stdout,NULL,_IONBF,0);
157     EiC_add_builtinfunc("puts",eic_puts);
158     EiC_add_builtinfunc("gets",eic_gets);
159     EiC_add_builtinfunc("putch",eic_putch);
160     EiC_add_builtinfunc("getch",eic_getch);
161     EiC_add_builtinfunc("getchq",eic_getchq);
162     EiC_add_builtinfunc("in",eic_in);
163     EiC_add_builtinfunc("out",eic_out);
164     EiC_add_builtinfunc("load",eic_load);
165     
166     EiC_add_builtinfunc("printf",eic_printf);
167     EiC_add_builtinfunc("sprintf",eic_sprintf);
168     EiC_add_builtinfunc("scanf",eic_scanf);
169     EiC_add_builtinfunc("sscanf",eic_sscanf);
170     EiC_add_builtinfunc("setvbuf",eic_setvbuf);
171     
172       /* string .h */
173     EiC_add_builtinfunc("memcpy",eic_memcpy);
174     EiC_add_builtinfunc("memmove",eic_memmove);
175     EiC_add_builtinfunc("strcpy",eic_strcpy);
176     EiC_add_builtinfunc("strncpy",eic_strncpy);
177     EiC_add_builtinfunc("strcat",eic_strcat);
178     EiC_add_builtinfunc("strncat",eic_strncat);
179     EiC_add_builtinfunc("memcmp",eic_memcmp);
180     EiC_add_builtinfunc("strcmp",eic_strcmp);
181     EiC_add_builtinfunc("strcoll",eic_strcoll);
182     EiC_add_builtinfunc("strncmp",eic_strncmp);
183     EiC_add_builtinfunc("strxfrm",eic_strxfrm);
184     EiC_add_builtinfunc("memchr",eic_memchr);
185     EiC_add_builtinfunc("strchr",eic_strchr);
186     EiC_add_builtinfunc("strcspn",eic_strcspn);
187     EiC_add_builtinfunc("strpbrk",eic_strpbrk);
188     EiC_add_builtinfunc("strrchr",eic_strrchr);
189     EiC_add_builtinfunc("strspn",eic_strspn);
190     EiC_add_builtinfunc("strstr",eic_strstr);
191     EiC_add_builtinfunc("strtok",eic_strtok);
192     EiC_add_builtinfunc("memset",eic_memset);
193     EiC_add_builtinfunc("strerror",eic_strerror);
194     EiC_add_builtinfunc("strlen",eic_strlen);  
195     EiC_add_builtinfunc("strrev", eic_strrev);
196     
197      /* stdlib.h */
198     EiC_add_builtinfunc("_itoa", eic_itoa);
199     EiC_add_builtinfunc("_ltoa", eic_ltoa);
200     EiC_add_builtinfunc("fftoa", eic_fftoa);
201     EiC_add_builtinfunc("malloc", eic_malloc);
202     EiC_add_builtinfunc("calloc", eic_calloc);
203     EiC_add_builtinfunc("realloc", eic_realloc);
204     EiC_add_builtinfunc("free", eic_free);
205     EiC_add_builtinfunc("strtod", eic_strtod);
206     EiC_add_builtinfunc("strtol", eic_strtol);
207     EiC_add_builtinfunc("strtoul", eic_strtoul);
208     EiC_add_builtinfunc("rand", eic_rand);
209     EiC_add_builtinfunc("srand", eic_srand);
210     EiC_add_builtinfunc("atoi", eic_atoi);
211     EiC_add_builtinfunc("atof", eic_atof);
212     EiC_add_builtinfunc("atol", eic_atol);
213     EiC_add_builtinfunc("abort",eic_exit);
214
215     EiC_add_builtinfunc("eic_exit",eic_exit);
216
217     EiC_add_builtinfunc("div",eic_div);
218     EiC_add_builtinfunc("ldiv",eic_ldiv);
219     EiC_add_builtinfunc("acos",eic_acos);
220     EiC_add_builtinfunc("asin",eic_asin);
221     EiC_add_builtinfunc("atan",eic_atan);
222     EiC_add_builtinfunc("atan2",eic_atan2);
223     EiC_add_builtinfunc("cos",eic_cos);
224     EiC_add_builtinfunc("sin",eic_sin);
225     EiC_add_builtinfunc("tan",eic_tan);
226     EiC_add_builtinfunc("cosh",eic_cosh);
227     EiC_add_builtinfunc("sinh",eic_sinh);
228     EiC_add_builtinfunc("tanh",eic_tanh);
229     EiC_add_builtinfunc("exp",eic_exp);
230     EiC_add_builtinfunc("frexp",eic_frexp);
231     EiC_add_builtinfunc("ldexp",eic_ldexp);
232     EiC_add_builtinfunc("log",eic_log);
233     EiC_add_builtinfunc("log10",eic_log10);
234     EiC_add_builtinfunc("modf",eic_modf);
235     EiC_add_builtinfunc("pow",eic_pow);
236     EiC_add_builtinfunc("sqrt",eic_sqrt);
237     EiC_add_builtinfunc("ceil",eic_ceil);
238     EiC_add_builtinfunc("fabs",eic_fabs);
239     EiC_add_builtinfunc("floor",eic_floor);
240     EiC_add_builtinfunc("fmod",eic_fmod);
241
242
243     startstr=loadstring; /* load defines */
244     
245     /* strcat(startstr,"typedef struct {void *p, *sp, *ep;} ptr_t;\n");
246     strcat(startstr,"typedef struct { ptr_t _ptr; int _cnt; ptr_t _base;\\\n");
247     strcat(startstr,"unsigned short _flag; short _fd; unsigned long _pid;\\\n");
248     strcat(startstr,"unsigned  _bsize; ptr_t _tmpnam; char _sbuf[4];\\\n");
249     strcat(startstr,"unsigned _entry; }FILE;\n");
250
251     strcat(startstr,"int fgetc(FILE * fp);\n");
252     strcat(startstr,"int fputc(int c, FILE * fp);\n");
253     strcat(startstr,"char * fgets(char *s, int n, FILE *fp);\n");
254     strcat(startstr,"int fputs(const char *s, FILE *fp);\n");  */
255
256     #endif
257     EiC_startEiC(argc, argv);
258     return 0;
259 }
260