30 unsigned char ret = dc->
digits[dc->
idx--];
49 const size_t digit_len = (size_t) ceil(log10((
double) (n + 1)));
53 ExtendInit(
digits, (
unsigned char *) malloc(digit_len *
sizeof(
unsigned char))),
56 for (
size_t i = 0; i < digit_len; i++) {
#define IteratorInitHead(advance,...)
The base macro for all iterator initialization functions in this project.
Definition: iterator.h:111
#define IteratorTail(return_type, struct_type)
The base definition macro for all iterators in this project.
Definition: iterator.h:46
bool exhausted
An indicator that the iterator has stopped.
Definition: iterator.h:231
size_t idx
Definition: digits.h:20
void free_digit_counter(digit_counter *dc)
Definition: digits.h:39
#define ExtendInit(name, value)
The extension macro for initializing more complicated Iterators.
Definition: iterator.h:168
digit_counter digits(uintmax_t n)
Definition: digits.h:48
#define AddDestructor(func)
The extension macro for initializing Iterators with a destructor.
Definition: iterator.h:145
#define IterationHead(it)
The base macro for all iteration functions in this project.
Definition: iterator.h:74
unsigned char * digits
Definition: digits.h:19
static unsigned char advance_digit_counter(digit_counter *dc)
Definition: digits.h:28
An implementation of Python-like iterators and generators using macros to maintain static typing...