1 /*--------------------------------------------------*
2  | builtin.h                                        |
3  | Header file for builtin.c, part of the Awka      |
4  | Library, Copyright 1999, Andrew Sumner.          |
5  | This file is covered by the GNU General Public   |
6  | License (GPL).                                   |
7  *--------------------------------------------------*/
8 
9 #ifndef _BUILTIN_H
10 #define _BUILTIN_H
11 
12 #define a_KEEP 0
13 #define a_TEMP 1
14 
15 #define a_BI_TOUPPER 1
16 #define a_BI_TOLOWER 2
17 #define a_BI_TOTITLE 3
18 
19 #ifndef _IN_LIBRARY
20 static double
awka_length(a_VAR * v)21 awka_length(a_VAR *v)
22 {
23   awka_gets1(v);
24   return (double) v->slen;
25 }
26 
27 static double
awka_index(a_VAR * va,a_VAR * vb)28 awka_index(a_VAR *va, a_VAR *vb)
29 {
30   register char *c, *a, *b;
31 
32   a = awka_gets1(va);
33   b = awka_gets1(vb);
34   c = strstr(a, b);
35 
36   if (c)
37     return (double) ((c - a) + 1);
38   return 0;
39 }
40 
41 static double
awka_and(a_VAR * va,a_VAR * vb)42 awka_and(a_VAR *va, a_VAR *vb)
43 {
44   return (double) ((int) awka_getd1(va) & (int) awka_getd1(vb));
45 }
46 
47 static double
awka_or(a_VAR * va,a_VAR * vb)48 awka_or(a_VAR *va, a_VAR *vb)
49 {
50   return (double) ((int) awka_getd1(va) | (int) awka_getd1(vb));
51 }
52 
53 static double
awka_xor(a_VAR * va,a_VAR * vb)54 awka_xor(a_VAR *va, a_VAR *vb)
55 {
56   return (double) ((int) awka_getd1(va) ^ (int) awka_getd1(vb));
57 }
58 
59 static double
awka_compl(a_VAR * va)60 awka_compl(a_VAR *va)
61 {
62   return (double) (~((int) awka_getd1(va)));
63 }
64 
65 static double
awka_lshift(a_VAR * va,a_VAR * vb)66 awka_lshift(a_VAR *va, a_VAR *vb)
67 {
68   return (double) ((int) awka_getd1(va) << (int) awka_getd1(vb));
69 }
70 
71 static double
awka_rshift(a_VAR * va,a_VAR * vb)72 awka_rshift(a_VAR *va, a_VAR *vb)
73 {
74   return (double) ((int) awka_getd1(va) >> (int) awka_getd1(vb));
75 }
76 
77 #endif
78 
79 a_VAR *    awka_getstringvar(char);
80 a_VAR *    awka_getdoublevar(char);
81 a_VAR *    awka_strconcat2(char, a_VAR *, a_VAR *);
82 a_VAR *    awka_strconcat3(char, a_VAR *, a_VAR *, a_VAR *);
83 a_VAR *    awka_strconcat4(char, a_VAR *, a_VAR *, a_VAR *, a_VAR *);
84 a_VAR *    awka_strconcat5(char, a_VAR *, a_VAR *, a_VAR *, a_VAR *, a_VAR *);
85 a_VAR *    awka_strconcat(char, a_VARARG *);
86 a_VAR *    awka_match(char, char, a_VAR *, a_VAR *, a_VAR *);
87 a_VAR *    awka_substr(char, a_VAR *, double, double);
88 a_VAR *    awka_sub(char, char, int, a_VAR *, a_VAR *, a_VAR *);
89 a_VAR *    awka_gensub(char, a_VAR *, a_VAR *, a_VAR *, a_VAR *);
90 a_VAR *    awka_tocase(char, char, a_VAR *);
91 a_VAR *    awka_system(char, a_VAR *);
92 a_VAR *    awka_trim(char, a_VARARG *);
93 a_VAR *    awka_ltrim(char, a_VARARG *);
94 a_VAR *    awka_rtrim(char, a_VARARG *);
95 double     awka_rand();
96 a_VAR *    awka_srand(char, a_VARARG *);
97 a_VAR *    awka_left(char, a_VAR *, a_VAR *);
98 a_VAR *    awka_right(char, a_VAR *, a_VAR *);
99 a_VAR *    awka_ascii(char, a_VARARG *);
100 a_VAR *    awka_char(char, a_VAR *);
101 a_VAR *    awka_time(char, a_VARARG *);
102 a_VAR *    awka_systime(char);
103 a_VAR *    awka_gmtime(char, a_VARARG *);
104 a_VAR *    awka_localtime(char, a_VARARG *);
105 a_VAR *    awka_mktime(char, a_VARARG *);
106 a_VAR *    awka_strftime(char, a_VARARG *);
107 a_VAR *    awka_min(char, a_VARARG *);
108 a_VAR *    awka_max(char, a_VARARG *);
109 a_VAR *    awka_sprintf(char, a_VARARG *);
110 a_VAR *    awka_getline(char, a_VAR *, char *, int, char);
111 a_VAR *    awka_fflush(char, a_VARARG *);
112 a_VAR *    awka_close(char, a_VARARG *);
113 void       awka_printf( char *, int, int, a_VARARG * );
114 void       awka_print( char *, int, int, a_VARARG * );
115 a_VARARG * awka_vararg(char, a_VAR *var, ...);
116 a_VARARG * awka_arg0(char);
117 a_VARARG * awka_arg1(char, a_VAR *);
118 a_VARARG * awka_arg2(char, a_VAR *, a_VAR *);
119 a_VARARG * awka_arg3(char, a_VAR *, a_VAR *, a_VAR *);
120 
121 #define awka_length0   awka_length(awka_doln(0,0))
122 
123 #ifndef BUILTIN_HOME
124 extern int _awka_file_read;
125 #endif
126 
127 #endif
128