#include "print.h" #include size_t print(am_t *am, char *buffer, size_t buffer_size) { assert(AM_VAL(am)->is_atom); assert(AM_VAL(am)->atom.type == ATOM_TYPE_INTEGER); size_t i = 0; int64_t value = AM_VAL(am)->atom.integer; if (value < 0) { buffer[i++] = '-'; value *= -1; } int divisor = 10; while (divisor <= value) divisor *= 10; do { divisor /= 10; const int digit = value / divisor; value = value % divisor; assert(i < buffer_size); buffer[i++] = '0' + (char)digit; } while (divisor > 1); return i; }