1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #ifndef _IPXE_PARAMS_H
- #define _IPXE_PARAMS_H
-
- /** @file
- *
- * Form parameters
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <ipxe/list.h>
- #include <ipxe/refcnt.h>
-
- /** A form parameter list */
- struct parameters {
- /** Reference count */
- struct refcnt refcnt;
- /** List of all parameter lists */
- struct list_head list;
- /** Name */
- const char *name;
- /** Parameters */
- struct list_head entries;
- };
-
- /** A form parameter */
- struct parameter {
- /** List of form parameters */
- struct list_head list;
- /** Key */
- const char *key;
- /** Value */
- const char *value;
- };
-
- /**
- * Increment form parameter list reference count
- *
- * @v params Parameter list, or NULL
- * @ret params Parameter list as passed in
- */
- static inline __attribute__ (( always_inline )) struct parameters *
- params_get ( struct parameters *params ) {
- ref_get ( ¶ms->refcnt );
- return params;
- }
-
- /**
- * Decrement form parameter list reference count
- *
- * @v params Parameter list, or NULL
- */
- static inline __attribute__ (( always_inline )) void
- params_put ( struct parameters *params ) {
- ref_put ( ¶ms->refcnt );
- }
-
- /**
- * Claim ownership of form parameter list
- *
- * @v params Parameter list
- * @ret params Parameter list
- */
- static inline __attribute__ (( always_inline )) struct parameters *
- claim_parameters ( struct parameters *params ) {
-
- /* Remove from list of parameter lists */
- list_del ( ¶ms->list );
-
- return params;
- }
-
- /** Iterate over all form parameters in a list */
- #define for_each_param( param, params ) \
- list_for_each_entry ( (param), &(params)->entries, list )
-
- extern struct parameters * find_parameters ( const char *name );
- extern struct parameters * create_parameters ( const char *name );
- extern struct parameter * add_parameter ( struct parameters *params,
- const char *key, const char *value );
-
- #endif /* _IPXE_PARAMS_H */
|