// I/O of numbers.

#ifndef _CL_NUMBER_IO_H
#define _CL_NUMBER_IO_H

#include "cln/io.h"
#include "cln/number.h"

namespace cln {

// Input.

// Finish with bad syntax.
#ifdef _CL_MACROS_H
nonreturning_function(extern, read_number_bad_syntax, (const char * string, const char * string_limit));
#else
extern void read_number_bad_syntax (const char * string, const char * string_limit);
#endif

// Finish with junk after the number.
#ifdef _CL_MACROS_H
nonreturning_function(extern, read_number_junk, (const char * string_rest, const char * string, const char * string_limit));
#else
extern void read_number_junk (const char * string_rest, const char * string, const char * string_limit);
#endif

// Finish with EOF.
#ifdef _CL_MACROS_H
nonreturning_function(extern, read_number_eof, (void));
#else
extern void read_number_eof (void);
#endif

struct cl_read_flags;

}  // namespace cln

#endif /* _CL_NUMBER_IO_H */