1
2 #ifndef DEFINE_INLINE_H
3 #define DEFINE_INLINE_H
4
ww_call_cmp(char * d_op,char * d_cmp,int d_len)5 inline bool ww_call_cmp (char * d_op, char * d_cmp, int d_len)
6 {
7 if (!strncmp (d_op, d_cmp, d_len)
8 && (d_op[d_len] == '(' || d_op[d_len+1] == '('))
9 return true;
10
11 return false;
12 }
13
ww_case_cmp(char * d_op,char * d_cmp,int d_len)14 inline bool ww_case_cmp (char * d_op, char * d_cmp, int d_len)
15 {
16 if (!strncmp (d_op, d_cmp, d_len)
17 && (d_op[d_len] == ':' || d_op[d_len+1] == ':'))
18 return true;
19
20 return false;
21 }
22
local_ftest(char * S)23 inline bool local_ftest (char *S) // test for pair "()"
24 {
25 int d_count1 = 0;
26 int d_count2 = 0;
27
28 while (*S) {
29 if (*S == '(')
30 d_count1++;
31
32 if (*S == ')')
33 d_count2++;
34
35 if (!d_count1 || (d_count1 == d_count2)) {
36 if (*S == '[')
37 return false;
38 if (*S == ']')
39 return false;
40 if (*S == '=')
41 return false;
42 }
43 S++;
44 }
45
46 return d_count1 && d_count2;
47 }
48
last_ch(char * S)49 inline char last_ch (char *S)
50 {
51 S = &S[strlen (S)] - 1;
52 while (if_digit (S) || if_abc(S) || *S == '_')
53 S--;
54 if (*S == ' ')
55 S--;
56 return *S;
57 }
58
ww_after_word(char * S)59 inline char ww_after_word (char *S)
60 {
61 while (true) {
62 if (! (if_abc (S) || *S =='_' || if_digit (S)))
63 break;
64 S++;
65 }
66 if (*S == ' ')
67 S++;
68
69 return *S;
70 }
71
free_cword(c_word * word)72 inline void free_cword (c_word * word)
73 {
74 free (word->S);
75 free (word);
76 }
77
new_cword(char * word,char sym)78 inline struct c_word * new_cword (char *word, char sym)
79 {
80 c_word * Ret = CNEW (c_word, 1);
81 Ret->S = strdup (word);
82 Ret->ch = sym;
83 return Ret;
84 }
85
ww_first_word(char * word)86 inline char * ww_first_word (char * word)
87 {
88 char *S = word;
89
90 while (true) {
91 if (!if_abc (S) &&
92 !if_digit (S) &&
93 *S != '_')
94 break;
95 S++;
96 }
97
98 return Dstrndup (word, S-word);
99 }
100
ww_nsyms_r(char * begin,char * end,char sym)101 inline int ww_nsyms_r (char * begin, char * end, char sym)
102 {
103 char * S;
104 int count = 0;
105 S = end;
106 while (S != begin && *S == sym) {
107 ++count;
108 --S;
109 }
110 return count;
111 }
112
113 #define find_one_ext(ext) sblib_find ((char *) ".", (char *) ext, get_env()->tmp_files)
114
115 #endif
116
117