Added simple WCSA
[SXSI/TextCollection.git] / swcsa / utils / parameters.c
diff --git a/swcsa/utils/parameters.c b/swcsa/utils/parameters.c
new file mode 100644 (file)
index 0000000..9d06475
--- /dev/null
@@ -0,0 +1,47 @@
+
+#include "parameters.h"
+
+/***********************************************************************************/
+/*** FUNCTIONS USED FOR PARSING PARAMETERS FROM COMMAND LINE ***********************/
+/* Three function to variables to manage parameters */
+ bool is_delimeter(char *delimiters, char c) {
+   int i=0,len_delimiters=strlen(delimiters);
+   bool is=false;
+   for (i=0;i<len_delimiters;i++)
+     if (c == delimiters[i]) is=true;
+   return is;
+}
+
+
+ void parse_parameters(char *options, int *num_parameters, char ***parameters, char *delimiters) {
+  int i=0,j=0,temp=0,num=0, len_options=strlen(options);
+  char *options_temp;
+  while  (i<len_options) {
+    while ((i<len_options) && is_delimeter(delimiters,options[i])) i++;
+    temp=i;
+    while ((i<len_options) && !is_delimeter(delimiters,options[i])) i++;
+    if (i!=temp) num++;
+  }
+  (*parameters) = (char **) malloc(num*sizeof(char * ));
+  i=0;
+  while  (i<len_options) {
+    while ((i<len_options) && is_delimeter(delimiters,options[i])) i++;
+    temp=i;
+    while ((i<len_options) && !is_delimeter(delimiters,options[i])) i++;
+    if (i!=temp) {
+      (*parameters)[j]=(char *) malloc((i-temp+1)*sizeof(char));
+      options_temp = options+temp;
+      strncpy((*parameters)[j], options_temp, i-temp);
+      ((*parameters)[j])[i-temp] = '\0';
+      j++;
+    }
+  }
+  *num_parameters = num;
+}
+
+ void free_parameters(int num_parameters,char ***parameters) {
+  int i=0;
+  for (i=0; i<num_parameters;i++)
+    free((*parameters)[i]);
+  free((*parameters));
+}