summaryrefslogtreecommitdiffstats
path: root/subopt-helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'subopt-helper.h')
-rw-r--r--subopt-helper.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/subopt-helper.h b/subopt-helper.h
new file mode 100644
index 0000000000..529801697f
--- /dev/null
+++ b/subopt-helper.h
@@ -0,0 +1,39 @@
+#ifndef SUBOPT_HELPER_H
+#define SUBOPT_HELPER_H
+
+/**
+ * \file subopt-helper.h
+ *
+ * \brief Datatype and functions declarations for usage
+ * of the suboption parser.
+ *
+ */
+
+#define OPT_ARG_BOOL 0
+#define OPT_ARG_INT 1
+#define OPT_ARG_STR 2
+
+/** simple structure for defining the option name, type and storage location */
+typedef struct opt_s
+{
+ char * name; ///< string that identifies the option
+ int type; ///< option type as defined in subopt-helper.h
+ void * valp; ///< pointer to the mem where the value should be stored
+ int (* test)(void *); ///< argument test func ( optional )
+ int set; ///< Is set internally by the parser if the option was found.
+ ///< Don't use it at initialization of your opts, it will be
+ ///< overriden anyway!
+} opt_t;
+
+/** parses the string for the options specified in opt */
+int subopt_parse( char const * const str, opt_t * opts );
+
+
+/*------------------ arg specific types and declaration -------------------*/
+typedef struct strarg_s
+{
+ unsigned char len; ///< length of the string determined by the parser
+ char const * str; ///< pointer to position inside the parse string
+} strarg_t;
+
+#endif