// Input/output routines common to all pairing parameters.

// Requires:
// * param.h
// * stdio.h
// * gmp.h
#ifndef __PARAM_UTILS_H__
#define __PARAM_UTILS_H__

#pragma GCC visibility push(hidden)

void param_out_type(FILE *stream, char *s);
void param_out_mpz(FILE *stream, char *s, mpz_t z);
void param_out_int(FILE *stream, char *s, int i);
// TODO: Replace with a stdarg function, e.g.
//   err = lookup("ZZi", "p", "n", "l",  p->p, p->n, &p->l);
struct symtab_s; // let "include/pbc.h" not include "misc/symtab.h"
int lookup_int(int *n, struct symtab_s *tab, const char *key);
int lookup_mpz(mpz_t z, struct symtab_s *tab, const char *key);

#pragma GCC visibility pop

#endif //__PARAM_UTILS_H__