TPCCLIB
Loading...
Searching...
No Matches
iftsrch.c
Go to the documentation of this file.
1
5/******************************************************************************/
6#include "libtpcmisc.h"
7/******************************************************************************/
8
9/******************************************************************************/
17 IFT *ift,
19 char *key,
21 int verbose
22) {
23 int li;
24
25 if(verbose>0) printf("%s(*ift, \"%s\")\n", __func__, key);
26 if(ift==NULL) {return(-10);}
27 if(key==NULL || strlen(key)<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
28
29 /* Search the list */
30 for(li=0; li<ift->keyNr; li++) {
31 if(strcasecmp(ift->item[li].key, key)==0) {
32 strcpy(key, ift->item[li].key);
33 iftSetStatus(ift, IFT_OK); return(li);
34 }
35 }
36 iftSetStatus(ift, IFT_KEYNOTFOUND);
37 return(-1);
38}
39/******************************************************************************/
40
41/******************************************************************************/
50 IFT *ift,
52 char *key,
54 int n,
56 int verbose
57) {
58 int li, found_nr=0;
59
60 if(verbose>0) printf("%s(*ift, \"%s\", %d)\n", __func__, key, n);
61 if(ift==NULL) {return(-10);}
62 if(key==NULL || strlen(key)<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
63 if(n<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
64
65 /* Search the list */
66 for(li=0; li<ift->keyNr; li++) {
67 if(strcasecmp(ift->item[li].key, key)==0) {
68 strcpy(key, ift->item[li].key); found_nr++;
69 if(n==found_nr) {iftSetStatus(ift, IFT_OK); return(li);}
70 }
71 }
72 iftSetStatus(ift, IFT_KEYNOTFOUND);
73 return(-1);
74}
75/******************************************************************************/
76
77/******************************************************************************/
86 IFT *ift,
88 char *str,
90 int n,
92 int verbose
93) {
94 int li, found_nr=0;
95
96 if(verbose>0) printf("%s(*ift, \"%s\", %d)\n", __func__, str, n);
97 if(ift==NULL) {return(-10);}
98 if(str==NULL || strlen(str)<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
99 if(n<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
100
101 /* Search the list */
102 for(li=0; li<ift->keyNr; li++) {
103 if(strstr(ift->item[li].key, str)!=NULL) {
104 found_nr++;
105 if(n==found_nr) {iftSetStatus(ift, IFT_OK); return(li);}
106 }
107 }
108 iftSetStatus(ift, IFT_KEYNOTFOUND);
109 return(-1);
110}
111/******************************************************************************/
112
113/******************************************************************************/
122 IFT *ift,
124 char *str,
126 int n,
128 int verbose
129) {
130 int li, found_nr=0;
131
132 if(verbose>0) printf("%s(*ift, \"%s\", %d)\n", __func__, str, n);
133 if(ift==NULL) {return(-10);}
134 if(str==NULL || strlen(str)<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
135 if(n<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
136
137 /* Search the list */
138 for(li=0; li<ift->keyNr; li++) {
139 if(strstr(ift->item[li].value, str)!=NULL) {
140 found_nr++;
141 if(n==found_nr) {iftSetStatus(ift, IFT_OK); return(li);}
142 }
143 }
144 iftSetStatus(ift, IFT_VALUENOTFOUND);
145 return(-1);
146}
147/******************************************************************************/
148
149/******************************************************************************/
158 IFT *ift,
160 int si,
162 const char *key,
164 int verbose
165) {
166 int li;
167
168 if(verbose>0) printf("%s(*ift, %d, \"%s\")\n", __func__, si, key);
169 if(ift==NULL) {return(-10);}
170 if(key==NULL || strlen(key)<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
171 if(si<0) {iftSetStatus(ift, IFT_FAULT); return(-12);}
172
173 /* Search the list */
174 for(li=si; li<ift->keyNr; li++) {
175 if(strcasecmp(ift->item[li].key, key)==0) {
176 iftSetStatus(ift, IFT_OK); return(li);
177 }
178 }
179 iftSetStatus(ift, IFT_KEYNOTFOUND);
180 return(-1);
181}
182/******************************************************************************/
183
184/******************************************************************************/
193 IFT *ift,
195 int si,
197 const char *key,
199 const char *value,
201 int verbose
202) {
203 int li;
204
205 if(verbose>0) printf("%s(*ift, %d, \"%s\", \"%s\")\n", __func__, si, key, value);
206 if(ift==NULL) {return(-10);}
207 if(key==NULL) {iftSetStatus(ift, IFT_FAULT); return(-11);}
208 if(value==NULL) {iftSetStatus(ift, IFT_FAULT); return(-12);}
209 if(si<0) {iftSetStatus(ift, IFT_FAULT); return(-13);}
210
211 /* Search the list */
212 for(li=si; li<ift->keyNr; li++) {
213 if(strcasecmp(ift->item[li].key, key)!=0) continue;
214 if(strcasecmp(ift->item[li].value, value)!=0) continue;
215 iftSetStatus(ift, IFT_OK); return(li);
216 }
217 iftSetStatus(ift, IFT_KEYNOTFOUND);
218 return(-1);
219}
220/******************************************************************************/
221
222/******************************************************************************/
230 IFT *ift,
232 int si,
234 const char *key,
236 float *value,
238 int verbose
239) {
240 int li;
241
242 if(verbose>0) printf("%s(*ift, \"%s\", *value)\n", __func__, key);
243 if(ift==NULL) {return(-10);}
244 if(value==NULL) {iftSetStatus(ift, IFT_FAULT); return(-10);}
245 *value=nanf("");
246 if(key==NULL || strlen(key)<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
247 if(si<0) {iftSetStatus(ift, IFT_FAULT); return(-12);}
248 iftSetStatus(ift, IFT_VALUENOTFOUND);
249 /* Search the list */
250 for(li=si; li<ift->keyNr; li++) {
251 if(strcasecmp(ift->item[li].key, key)==0) {
252 if(ift->item[li].value==NULL || strlen(ift->item[li].value)<1) return -1;
253 (void)sscanf(ift->item[li].value, "%f", value);
254 if(isnan(*value)) return -1;
255 iftSetStatus(ift, IFT_OK); return(li);
256 }
257 }
258 iftSetStatus(ift, IFT_KEYNOTFOUND);
259 return(-1);
260}
261/******************************************************************************/
262
263/******************************************************************************/
270 IFT *ift,
272 int si,
274 const char *key,
276 double *value,
278 int verbose
279) {
280 int li;
281
282 if(verbose>0) printf("%s(*ift, \"%s\", *value)\n", __func__, key);
283 if(ift==NULL) {return(-10);}
284 if(value==NULL) {iftSetStatus(ift, IFT_FAULT); return(-10);}
285 *value=nan("");
286 if(key==NULL || strlen(key)<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
287 if(si<0) {iftSetStatus(ift, IFT_FAULT); return(-12);}
288 iftSetStatus(ift, IFT_VALUENOTFOUND);
289 /* Search the list */
290 for(li=si; li<ift->keyNr; li++) {
291 if(strcasecmp(ift->item[li].key, key)==0) {
292 if(ift->item[li].value==NULL || strlen(ift->item[li].value)<1) return -1;
293 (void)sscanf(ift->item[li].value, "%lf", value);
294 if(isnan(*value)) return -1;
295 iftSetStatus(ift, IFT_OK); return(li);
296 }
297 }
298 iftSetStatus(ift, IFT_KEYNOTFOUND);
299 return(-1);
300}
301/******************************************************************************/
302
303/******************************************************************************/
311 IFT *ift,
313 int si,
315 const char *key,
317 int *value,
319 int verbose
320) {
321 int li;
322
323 if(verbose>0) printf("%s(*ift, \"%s\", *value)\n", __func__, key);
324 if(ift==NULL) {return(-10);}
325 if(value==NULL) {iftSetStatus(ift, IFT_FAULT); return(-10);}
326 *value=-9999;
327 if(key==NULL || strlen(key)<1) {iftSetStatus(ift, IFT_FAULT); return(-11);}
328 if(si<0) {iftSetStatus(ift, IFT_FAULT); return(-12);}
329 /* Search the list */
330 iftSetStatus(ift, IFT_VALUENOTFOUND);
331 for(li=si; li<ift->keyNr; li++) {
332 if(strcasecmp(ift->item[li].key, key)==0) {
333 if(ift->item[li].value==NULL || strlen(ift->item[li].value)<1) return -1;
334 (void)sscanf(ift->item[li].value, "%d", value);
335 if(*value==-9999) return -1;
336 iftSetStatus(ift, IFT_OK); return(li);
337 }
338 }
339 iftSetStatus(ift, IFT_KEYNOTFOUND);
340 return(-1);
341}
342/******************************************************************************/
343
344/******************************************************************************/
352 IFT *ift,
354 const char *key,
356 int verbose
357) {
358 int li, found_nr=0;
359
360 if(verbose>0) printf("%s(*ift, \"%s\")\n", __func__, key);
361 if(ift==NULL) {return(0);}
362 if(key==NULL || strlen(key)<1) {iftSetStatus(ift, IFT_FAULT); return(0);}
363 iftSetStatus(ift, IFT_KEYNOTFOUND);
364
365 /* Search the list */
366 for(li=0; li<ift->keyNr; li++) if(strcasecmp(ift->item[li].key, key)==0) found_nr++;
367 if(found_nr>0) iftSetStatus(ift, IFT_OK);
368 else iftSetStatus(ift, IFT_KEYNOTFOUND);
369 return(found_nr);
370}
371/*****************************************************************************/
372
373/*****************************************************************************/
void iftSetStatus(IFT *ift, int status)
Definition ift.c:29
int iftFindNthValue(IFT *ift, char *str, int n, int verbose)
Definition iftsrch.c:120
int iftGetFloatValue(IFT *ift, int si, const char *key, float *value, int verbose)
Definition iftsrch.c:228
int iftGetDoubleValue(IFT *ift, int si, const char *key, double *value, int verbose)
Definition iftsrch.c:268
int iftFindNthKey(IFT *ift, char *str, int n, int verbose)
Definition iftsrch.c:84
int iftGet(IFT *ift, char *key, int verbose)
Definition iftsrch.c:15
int iftGetFullmatchFrom(IFT *ift, int si, const char *key, const char *value, int verbose)
Definition iftsrch.c:191
int iftGetIntValue(IFT *ift, int si, const char *key, int *value, int verbose)
Definition iftsrch.c:309
int iftGetFrom(IFT *ift, int si, const char *key, int verbose)
Definition iftsrch.c:156
int iftGetKeyNr(IFT *ift, const char *key, int verbose)
Definition iftsrch.c:350
int iftGetNth(IFT *ift, char *key, int n, int verbose)
Definition iftsrch.c:48
Header file for libtpcmisc.
int keyNr
Definition libtpcmisc.h:270
IFT_KEY_AND_VALUE * item
Definition libtpcmisc.h:279