picofuse

env.h
Go to the documentation of this file.
1 
36 #pragma once
37 #include "io.h"
38 #include <stdbool.h>
39 #include <stddef.h>
40 #include <stdint.h>
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
47 // TYPES
48 
57 typedef enum {
63 
69 typedef void (*sys_env_signal_callback_t)(sys_env_signal_t signal);
70 
78 typedef enum {
85 
96 typedef struct sys_env_arg_flag_t {
97  const char *long_name;
98  const char *short_name;
101  const char *value;
104 
111 #ifndef SYS_ENV_ARG_CAPACITY
112 #define SYS_ENV_ARG_CAPACITY 16
113 #endif
114 
126 
128 // METHODS
129 
154 bool sys_env_signalhandler(sys_env_signal_t mask,
155  sys_env_signal_callback_t callback);
156 
162 const char *sys_env_serial(void);
163 
169 const char *sys_env_name(void);
170 
177 const char *sys_env_system(void);
178 
184 const char *sys_env_version(void);
185 
199 void sys_env_set_args(int argc, char *argv[]);
200 
226 
233 size_t sys_env_arg_count(sys_env_arg_t *args);
234 
243 const char *sys_env_arg_string(sys_env_arg_t *args, size_t index);
244 
255 
265 bool sys_env_arg_parse_bool(sys_env_arg_t *args, const char *name, bool *value);
266 
277 bool sys_env_arg_parse_int32(sys_env_arg_t *args, const char *name,
278  int32_t *value);
279 
290 bool sys_env_arg_parse_uint32(sys_env_arg_t *args, const char *name,
291  uint32_t *value);
292 
303 bool sys_env_arg_parse_int64(sys_env_arg_t *args, const char *name,
304  int64_t *value);
305 
316 bool sys_env_arg_parse_uint64(sys_env_arg_t *args, const char *name,
317  uint64_t *value);
318 
330 bool sys_env_arg_parse_float32(sys_env_arg_t *args, const char *name,
331  float *value);
332 
344 bool sys_env_arg_parse_float64(sys_env_arg_t *args, const char *name,
345  double *value);
346 
358 size_t sys_env_arg_parse_string(sys_env_arg_t *args, const char *name,
359  char *value, size_t cap);
360 
363 #ifdef __cplusplus
364 }
365 #endif
Argument flag expects an integer value.
Definition: env.h:81
const char * value
Default value, or the matched value after a successful parse.
Definition: env.h:101
Termination request from the environment.
Definition: env.h:59
bool sys_env_arg_parse_float32(sys_env_arg_t *args, const char *name, float *value)
Look up a parsed flag&#39;s value as a 32-bit single-precision floating-point number. ...
size_t sys_env_arg_count(sys_env_arg_t *args)
Return the number of positional arguments.
Argument flag expects a string value.
Definition: env.h:80
Argument flag expects a floating-point value.
Definition: env.h:83
Quit request from the environment.
Definition: env.h:61
Argument flag expects an unsigned integer value.
Definition: env.h:82
bool sys_env_arg_parse_uint32(sys_env_arg_t *args, const char *name, uint32_t *value)
Look up a parsed flag&#39;s value as a 32-bit unsigned integer.
const char * sys_env_version(void)
Return the version of the current environment.
sys_env_arg_type_t
Argument flag value types.
Definition: env.h:78
struct sys_env_arg_flag_t sys_env_arg_flag_t
Describes a single command-line argument flag.
const char * long_name
Name of the argument flag.
Definition: env.h:97
Opaque byte streams for reading, writing, seeking, and readiness notification.
struct sys_iostream_t sys_iostream_t
An opaque byte stream.
Definition: io.h:70
const char * sys_env_serial(void)
Return a unique identifier for the current environment.
const char * sys_env_name(void)
Return the name of the current environment.
bool sys_env_arg_parse_bool(sys_env_arg_t *args, const char *name, bool *value)
Look up a parsed flag&#39;s value as a boolean.
size_t sys_env_arg_parse_string(sys_env_arg_t *args, const char *name, char *value, size_t cap)
Look up a parsed flag&#39;s value as a string.
bool sys_env_signalhandler(sys_env_signal_t mask, sys_env_signal_callback_t callback)
Set a handler for environment signals.
bool sys_env_arg_parse_uint64(sys_env_arg_t *args, const char *name, uint64_t *value)
Look up a parsed flag&#39;s value as a 64-bit unsigned integer.
No signal.
Definition: env.h:58
const char * sys_env_arg_string(sys_env_arg_t *args, size_t index)
Return the value of a positional argument by index.
bool sys_env_arg_parse_int64(sys_env_arg_t *args, const char *name, int64_t *value)
Look up a parsed flag&#39;s value as a 64-bit signed integer.
void sys_env_set_args(int argc, char *argv[])
Replace the argc/argv that sys_env_arg_parse() reads.
sys_env_signal_t
Environment signal types.
Definition: env.h:57
bool sys_env_arg_parse_int32(sys_env_arg_t *args, const char *name, int32_t *value)
Look up a parsed flag&#39;s value as a 32-bit signed integer.
sys_env_arg_t * sys_env_arg_parse(sys_env_arg_flag_t *flags)
Parse the process&#39;s command-line arguments against a set of flags.
sys_env_arg_type_t type
Expected value type for the argument flag.
Definition: env.h:100
bool sys_env_arg_parse_float64(sys_env_arg_t *args, const char *name, double *value)
Look up a parsed flag&#39;s value as a 64-bit double-precision floating-point number. ...
Argument flag expects a boolean value.
Definition: env.h:79
Interrupt request from the environment.
Definition: env.h:60
const char * sys_env_system(void)
Return the system identifier for the current environment.
Describes a single command-line argument flag.
Definition: env.h:96
bool sys_env_arg_usage(sys_env_arg_flag_t *flags, sys_iostream_t *stream)
Print the usage information for the command-line flags.
struct sys_env_arg_t sys_env_arg_t
The result of a successful sys_env_arg_parse() call.
Definition: env.h:125
const char * short_name
Short name or single-character alias for the argument flag.
Definition: env.h:98
void(* sys_env_signal_callback_t)(sys_env_signal_t signal)
Callback function type for handling environment signals.
Definition: env.h:69