1 // Copyright 2016 The Fuchsia Authors 2 // Copyright (c) 2008 Travis Geiselbrecht 3 // 4 // Use of this source code is governed by a MIT-style 5 // license that can be found in the LICENSE file or at 6 // https://opensource.org/licenses/MIT 7 8 #pragma once 9 10 #include <stdarg.h> 11 #include <zircon/compiler.h> 12 #include <stddef.h> 13 14 __BEGIN_CDECLS 15 16 /* printf engine that parses the format string and generates output */ 17 18 /* function pointer to pass the printf engine, called back during the formatting. 19 * input is a string to output, length bytes to output, 20 * return code is number of characters that would have been written, or error code (if negative) 21 */ 22 typedef int (*_printf_engine_output_func)(const char *str, size_t len, void *state); 23 24 #ifndef PRINTF_DECL 25 #define PRINTF_DECL(name) int name 26 #endif 27 #ifndef PRINTF_CALL 28 #define PRINTF_CALL(name) name 29 #endif 30 31 PRINTF_DECL(_printf_engine)(_printf_engine_output_func out, void *state, const char *fmt, va_list ap); 32 33 __END_CDECLS 34