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