diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2013-11-05 11:48:34 +0100 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2014-01-04 15:47:49 +0100 |
commit | 1f0238fb70f8f4e034e69c43872e62bb1917459e (patch) | |
tree | 9c5e9bd79bfe2f140243332063666fe9ab97391f /src/param.h | |
parent | f35cc11d24f9955ffaffb80edc90db6279bdc43e (diff) | |
download | pjctl-1f0238fb70f8f4e034e69c43872e62bb1917459e.tar.gz pjctl-1f0238fb70f8f4e034e69c43872e62bb1917459e.tar.bz2 pjctl-1f0238fb70f8f4e034e69c43872e62bb1917459e.zip |
New commandline parsing
This commit tries to centralize the user input parsing,
so that the functions really only do what they are for,
e.g. requesting for given valid input.
Diffstat (limited to 'src/param.h')
-rw-r--r-- | src/param.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/param.h b/src/param.h new file mode 100644 index 0000000..553366c --- /dev/null +++ b/src/param.h @@ -0,0 +1,47 @@ +/* + * pjctl - network projector control utility + * + * Copyright (C) 2011 Benjamin Franzke <benjaminfranzke@googlemail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef PARAM_H +#define PARAM_H + +enum pjctl_param_type { + PJCTL_PARAM_ATOM, + PJCTL_PARAM_RANGE, + PJCTL_PARAM_SWITCH, + PJCTL_PARAM_END +}; + +struct pjctl_param { + enum pjctl_param_type type; + union { + const char **atoms; + struct { int start, end, fallback; } range; + } p; +}; + +#define P (struct pjctl_param[]) +#define P_ATOM(...) { \ + .type = PJCTL_PARAM_ATOM, \ + .p.atoms = (const char *[]) { __VA_ARGS__, NULL } \ +} +#define P_RANGE(a,b,c) { .type = PJCTL_PARAM_RANGE, .p.range = { (a),(b),(c) } } +#define P_SWITCH { .type = PJCTL_PARAM_SWITCH } +#define P_END { .type = PJCTL_PARAM_END } + +#endif /* PARAM_H */ |