/** @file format.h * Module handling various formating functions * * The module provides a lightweight printf function and the attached tools */ #ifndef _FORMAT_H_ #define _FORMAT_H_ //--includes-------------------------------------------------------------------- #include #include //--type definitions------------------------------------------------------------ typedef uint32_t (*FormatCallback)(uint8_t byte, void* arg); //--functions------------------------------------------------------------------- /** * Custom implementation of snprintf. Print the given format into the given * buffer with the attached arguments properly formated. * * This function only provided a minimal subset of the standard library's * snprintf : %c, %s, %i, %d, %x as well as right-justified padding for %d and * %x * * Returns 0 if everything went as expected, 1 otherwise */ uint32_t format_snprintf(char* restrict buffer, uint32_t buffer_size, const char* restrict format, ...); /** * Custom implementation of fprintf using a callback instead of a file pointer. * Print the given format using the given callback with the attached arguments * properly formated. * * This function only provided a minimal subset of the standard library's * snprintf : %c, %s, %i, %d, %x as well as right-justified padding for %d and * %x * * Returns 0 if everything went as expected, 1 otherwise */ uint32_t format_fctprintf(FormatCallback callback, void* arg, const char* restrict format, ...); /** * Variadic variation of format_fctprintf(), see the later for more information */ uint32_t format_vfctprintf(FormatCallback callback, void* arg, const char* restrict format, va_list va); #endif //_FORMAT_H_