Program Listing for File PDJE_LOG_RUNTIME_API.h

Return to documentation for file (include\global\PDJE_LOG_RUNTIME_API.h)

#pragma once

#include "PDJE_EXPORT_SETTER.hpp"

#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum PDJE_LogLevelV1 {
    PDJE_LOG_LEVEL_TRACE_V1    = 0,
    PDJE_LOG_LEVEL_DEBUG_V1    = 1,
    PDJE_LOG_LEVEL_INFO_V1     = 2,
    PDJE_LOG_LEVEL_WARN_V1     = 3,
    PDJE_LOG_LEVEL_ERROR_V1    = 4,
    PDJE_LOG_LEVEL_CRITICAL_V1 = 5,
    PDJE_LOG_LEVEL_OFF_V1      = 6
} PDJE_LogLevelV1;

typedef enum PDJE_LogBackendV1 {
    PDJE_LOG_BACKEND_INTERNAL_SPDLOG_V1 = 0,
    PDJE_LOG_BACKEND_HOST_CALLBACK_V1   = 1
} PDJE_LogBackendV1;

typedef enum PDJE_LogInitResultV1 {
    PDJE_LOG_INIT_OK_V1                = 0,
    PDJE_LOG_INIT_ALREADY_INITIALIZED_V1 = 1,
    PDJE_LOG_INIT_INVALID_ARGUMENT_V1  = 2,
    PDJE_LOG_INIT_FAILED_V1            = 3
} PDJE_LogInitResultV1;

typedef enum PDJE_LogShutdownResultV1 {
    PDJE_LOG_SHUTDOWN_OK_V1             = 0,
    PDJE_LOG_SHUTDOWN_NOT_INITIALIZED_V1 = 1,
    PDJE_LOG_SHUTDOWN_FAILED_V1         = 2
} PDJE_LogShutdownResultV1;

typedef enum PDJE_LogConfigFlagsV1 {
    PDJE_LOG_CFG_FLAG_DISABLE_AUTOINIT_V1 = 1u << 0
} PDJE_LogConfigFlagsV1;

typedef void(PDJE_CALL *PDJE_LogHostWriteFnV1)(
    int         level,
    const char *message,
    size_t      message_len,
    void       *user_data);

typedef struct PDJE_LogHostSinkV1 {
    uint32_t             struct_size;
    PDJE_LogHostWriteFnV1 write;
    void                *user_data;
} PDJE_LogHostSinkV1;

typedef struct PDJE_LogConfigV1 {
    uint32_t         struct_size;
    int              backend;
    int              min_level;
    uint32_t         flags;
    const char      *file_path;
    PDJE_LogHostSinkV1 host_sink;
} PDJE_LogConfigV1;

PDJE_API int PDJE_CALL
pdje_logging_init_v1(const PDJE_LogConfigV1 *cfg);

PDJE_API int PDJE_CALL
pdje_logging_shutdown_v1(void);

PDJE_API int PDJE_CALL
pdje_logging_is_initialized_v1(void);

PDJE_API void PDJE_CALL
pdje_log_write_v1(int level, const char *message, size_t message_len);

#ifdef __cplusplus
}
#endif