// Copyright 2007-2022 David Robillard // 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 #include #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