Added simple WCSA
[SXSI/TextCollection.git] / swcsa / utils / parameters.c
1
2 #include "parameters.h"
3
4 /***********************************************************************************/
5 /*** FUNCTIONS USED FOR PARSING PARAMETERS FROM COMMAND LINE ***********************/
6 /* Three function to variables to manage parameters */
7  bool is_delimeter(char *delimiters, char c) {
8    int i=0,len_delimiters=strlen(delimiters);
9    bool is=false;
10    for (i=0;i<len_delimiters;i++)
11      if (c == delimiters[i]) is=true;
12    return is;
13 }
14
15
16  void parse_parameters(char *options, int *num_parameters, char ***parameters, char *delimiters) {
17   int i=0,j=0,temp=0,num=0, len_options=strlen(options);
18   char *options_temp;
19   while  (i<len_options) {
20     while ((i<len_options) && is_delimeter(delimiters,options[i])) i++;
21     temp=i;
22     while ((i<len_options) && !is_delimeter(delimiters,options[i])) i++;
23     if (i!=temp) num++;
24   }
25   (*parameters) = (char **) malloc(num*sizeof(char * ));
26   i=0;
27   while  (i<len_options) {
28     while ((i<len_options) && is_delimeter(delimiters,options[i])) i++;
29     temp=i;
30     while ((i<len_options) && !is_delimeter(delimiters,options[i])) i++;
31     if (i!=temp) {
32       (*parameters)[j]=(char *) malloc((i-temp+1)*sizeof(char));
33       options_temp = options+temp;
34       strncpy((*parameters)[j], options_temp, i-temp);
35       ((*parameters)[j])[i-temp] = '\0';
36       j++;
37     }
38   }
39   *num_parameters = num;
40 }
41
42  void free_parameters(int num_parameters,char ***parameters) {
43   int i=0;
44   for (i=0; i<num_parameters;i++)
45     free((*parameters)[i]);
46   free((*parameters));
47 }