/*
 * _scanf.h — внутреннее ядро scanf-семейства (НЕ публичный заголовок).
 *
 * Одно C-ядро на scanf/fscanf/sscanf; источник символов абстрагирован
 * парой колбэков (ядру нужен putback максимум на 1 символ).
 * Семантика — по Solid-C/ANSI: %d %u %x %o %c %s, модификатор l,
 * ширина, подавление '*', %%, пробелы в формате = скип пробелов ввода.
 */
#ifndef _SCANF_INTERNAL_H
#define _SCANF_INTERNAL_H

#include <stdarg.h>

/* Следующий символ источника или EOF. */
typedef int  (*_sc_get)(void *ctx);
/* Вернуть символ (гарантированно не EOF; максимум 1 подряд). */
typedef void (*_sc_unget)(void *ctx, int c);

int _scanf_core(_sc_get get, _sc_unget unget, void *ctx,
                const char *fmt, va_list ap);

#endif
