diff options
Diffstat (limited to 'src/log.h')
-rw-r--r-- | src/log.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/log.h b/src/log.h new file mode 100644 index 0000000..100fc39 --- /dev/null +++ b/src/log.h @@ -0,0 +1,74 @@ +// Copyright 2007-2022 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#ifndef JALV_LOG_H +#define JALV_LOG_H + +#include "attributes.h" +#include "types.h" +#include "urids.h" + +#include "lv2/log/log.h" +#include "lv2/urid/urid.h" + +#include <stdbool.h> +#include <stdio.h> + +#ifdef __GNUC__ +# define JALV_LOG_FUNC(fmt, arg1) __attribute__((format(printf, fmt, arg1))) +#else +# define JALV_LOG_FUNC(fmt, arg1) +#endif + +JALV_BEGIN_DECLS + +struct Port; + +// String and log utilities + +typedef enum { + JALV_LOG_ERR = 3, + JALV_LOG_WARNING = 4, + JALV_LOG_INFO = 6, + JALV_LOG_DEBUG = 7, +} JalvLogLevel; + +typedef struct { + JalvURIDs* urids; + bool tracing; +} JalvLog; + +void +jalv_print_control(Jalv* jalv, const struct Port* port, float value); + +char* +jalv_strdup(const char* str); + +char* +jalv_strjoin(const char* a, const char* b); + +JALV_LOG_FUNC(2, 0) +int +jalv_vlog(JalvLogLevel level, const char* fmt, va_list ap); + +JALV_LOG_FUNC(2, 3) +int +jalv_log(JalvLogLevel level, const char* fmt, ...); + +JALV_LOG_FUNC(3, 0) +int +jalv_vprintf(LV2_Log_Handle handle, LV2_URID type, const char* fmt, va_list ap); + +JALV_LOG_FUNC(3, 4) +int +jalv_printf(LV2_Log_Handle handle, LV2_URID type, const char* fmt, ...); + +bool +jalv_ansi_start(FILE* stream, int color); + +void +jalv_ansi_reset(FILE* stream); + +JALV_END_DECLS + +#endif // JALV_LOG_H |