2013-12-24 15:54:06 +01:00
|
|
|
#ifndef CMDLINEOPTIONS_H
|
|
|
|
#define CMDLINEOPTIONS_H
|
|
|
|
|
2013-12-27 11:53:29 +01:00
|
|
|
typedef struct _Option {
|
2013-12-24 18:05:27 +01:00
|
|
|
char* name; // the name of this option
|
|
|
|
char** options; //dashed option name and alternatives
|
|
|
|
unsigned int optionscount; // count of option alternatives
|
|
|
|
char** possibleparameters; // possible parameters for this options
|
|
|
|
unsigned int possibleparametercount; // count of possible parameters
|
|
|
|
char* description; // description of this parameter
|
|
|
|
char** defaultparameters; // default parameters
|
|
|
|
unsigned int defaultparametercount; // count of default parameters
|
2013-12-24 15:54:06 +01:00
|
|
|
|
2013-12-24 18:05:27 +01:00
|
|
|
char** values; // values
|
|
|
|
unsigned int valuecount; // size of the values, if more than one...
|
2013-12-25 17:27:41 +01:00
|
|
|
char set; // boolean if this option has been set
|
|
|
|
} Option;
|
2013-12-24 18:05:27 +01:00
|
|
|
|
2013-12-25 17:27:41 +01:00
|
|
|
|
|
|
|
typedef struct _CONode {
|
|
|
|
//CONode* prev;
|
|
|
|
struct _CONode* next;
|
2013-12-25 13:29:54 +01:00
|
|
|
Option* option;
|
2013-12-25 17:27:41 +01:00
|
|
|
} CONode;
|
2013-12-25 13:29:54 +01:00
|
|
|
|
2013-12-27 11:53:29 +01:00
|
|
|
typedef struct _CmdOptions {
|
2013-12-25 17:27:41 +01:00
|
|
|
char init;
|
2013-12-25 13:29:54 +01:00
|
|
|
CONode* options;
|
2013-12-27 19:59:33 +01:00
|
|
|
char cmdchar;
|
2013-12-25 17:27:41 +01:00
|
|
|
} CmdOptions;
|
2013-12-24 18:05:27 +01:00
|
|
|
|
2013-12-27 19:59:33 +01:00
|
|
|
/**
|
2013-12-25 13:29:54 +01:00
|
|
|
* Main structure
|
|
|
|
*/
|
|
|
|
extern CmdOptions cmdoptions;
|
|
|
|
|
2013-12-27 19:59:33 +01:00
|
|
|
/** Init function.
|
2013-12-24 18:05:27 +01:00
|
|
|
*/
|
2013-12-27 19:59:33 +01:00
|
|
|
void CmdOptions_InitCmd(char addhelp, char cmdchar);
|
|
|
|
void CmdOptions_Init(char addhelp);
|
2013-12-24 18:05:27 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* The heart of this whole thing, the parsing of all options...
|
|
|
|
*/
|
|
|
|
int CmdOptions_Parse(int argc, char** argv);
|
2013-12-27 19:59:33 +01:00
|
|
|
CONode* CmdOptions_SearchNode(char* cmdlineargument);
|
2013-12-24 18:05:27 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Add a new option with a new name, or a new option alternative to an existing one.
|
|
|
|
*/
|
2013-12-27 11:50:48 +01:00
|
|
|
void CmdOptions_Add(char* name, char* option);
|
2013-12-24 18:05:27 +01:00
|
|
|
/**
|
|
|
|
* Add a defaultparameter to an existing option, specified by name.
|
|
|
|
*/
|
2013-12-27 11:50:48 +01:00
|
|
|
void CmdOptions_AddDefaultParameter(char* name, char* defaultparameter);
|
2013-12-24 18:05:27 +01:00
|
|
|
/**
|
|
|
|
* Add a possible parameter to an existing option, specified by name.
|
|
|
|
* Keep in mind that you LIMIT that option to all possible parameters (?)
|
|
|
|
*/
|
2013-12-27 11:50:48 +01:00
|
|
|
void CmdOptions_AddPossibleParameter(char* name, char* possibleParameter);
|
2013-12-24 18:05:27 +01:00
|
|
|
/**
|
|
|
|
* Add a description to an existing option, specified by name.
|
|
|
|
*/
|
2013-12-27 11:50:48 +01:00
|
|
|
void CmdOptions_AddDescription(char* name, char* description);
|
2013-12-24 18:05:27 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if the option specified by name is set.
|
|
|
|
*/
|
2013-12-25 17:27:41 +01:00
|
|
|
int CmdOptions_IsSet(char* name);
|
2013-12-24 18:05:27 +01:00
|
|
|
/**
|
|
|
|
* Get first parameter of the option specified by name.
|
|
|
|
*/
|
|
|
|
char* CmdOptions_Get(char* name);
|
|
|
|
/**
|
|
|
|
* Get the first parameter of the option specified by name as integer.
|
|
|
|
*/
|
|
|
|
int CmdOptions_GetInt(char* name);
|
|
|
|
/**
|
|
|
|
* Get the first parameter of the option specified by name as long.
|
|
|
|
*/
|
|
|
|
long CmdOptions_GetLong(char* name);
|
|
|
|
/**
|
|
|
|
* Get the first parameter of the option specified by name as double.
|
|
|
|
*/
|
|
|
|
double CmdOptions_GetDouble(char* name);
|
|
|
|
/**
|
|
|
|
* Get all parameters of the given option name as string array.
|
|
|
|
* This is the 'Do It Yourself' retrieve function.
|
|
|
|
*/
|
|
|
|
int CmdOptions_GetAll(char* name, char** values, unsigned int* count);
|
2013-12-24 15:54:06 +01:00
|
|
|
|
2013-12-27 11:50:48 +01:00
|
|
|
CONode* CmdOptions_Create(char* name);
|
2013-12-25 17:27:41 +01:00
|
|
|
CONode* CmdOptions_NodeGet(char* name);
|
2013-12-27 11:50:48 +01:00
|
|
|
void CmdOptions_AddElement(char** target,int* counter, char* element);
|
2013-12-24 15:54:06 +01:00
|
|
|
#endif
|
|
|
|
|