diff options
Diffstat (limited to 'moon-abe/pbc-0.5.14/include/pbc_param.h')
-rw-r--r-- | moon-abe/pbc-0.5.14/include/pbc_param.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/moon-abe/pbc-0.5.14/include/pbc_param.h b/moon-abe/pbc-0.5.14/include/pbc_param.h new file mode 100644 index 00000000..143ab73c --- /dev/null +++ b/moon-abe/pbc-0.5.14/include/pbc_param.h @@ -0,0 +1,49 @@ +// Requires: +// * gmp.h +#ifndef __PBC_PARAM_H__ +#define __PBC_PARAM_H__ + +struct pairing_s; +struct pbc_param_interface_s { + void (*clear)(void *); + void (*init_pairing)(struct pairing_s *, void *); + void (*out_str)(FILE *stream, void *data); +}; +typedef struct pbc_param_interface_s pbc_param_interface_t[1]; +typedef struct pbc_param_interface_s *pbc_param_interface_ptr; + +struct pbc_param_s { + pbc_param_interface_ptr api; + void *data; +}; +typedef struct pbc_param_s *pbc_param_ptr; +typedef struct pbc_param_s pbc_param_t[1]; + +/*@manual param +Initializes pairing parameters from the string 's'. +Returns 0 if successful, 1 otherwise. +*/ +int pbc_param_init_set_str(pbc_param_t par, const char *s); + +/*@manual param +Same, but read at most 'len' bytes. +If 'len' is 0, it behaves as the previous function. +Returns 0 if successful, 1 otherwise. +*/ +int pbc_param_init_set_buf(pbc_param_t par, const char *s, size_t len); + +/*@manual param +Write pairing parameters to ''stream'' in a text format. +*/ +static inline void pbc_param_out_str(FILE *stream, pbc_param_ptr p) { + p->api->out_str(stream, p->data); +} + +/*@manual param +Clear 'p'. Call after 'p' is no longer needed. +*/ +static inline void pbc_param_clear(pbc_param_ptr p) { + p->api->clear(p->data); +} + +#endif //__PBC_PARAM_H__ |