#ifndef TRTX_LOGGER_BRIDGE_H
#define TRTX_LOGGER_BRIDGE_H
#include <cstddef>
namespace std {
typedef std::size_t size_t;
}
#include <NvInfer.h>
#include <type_traits>
static_assert(std::is_standard_layout<nvinfer1::Weights>::value, "Weights must be standard layout");
static_assert(std::is_trivial<nvinfer1::Weights>::value, "Weights must be trivial");
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*RustLogCallback)(void* user_data, int32_t severity, const char* msg);
typedef struct RustLoggerBridge RustLoggerBridge;
RustLoggerBridge* create_rust_logger_bridge(RustLogCallback callback, void* user_data);
void destroy_rust_logger_bridge(RustLoggerBridge* logger);
nvinfer1::ILogger* get_logger_interface(RustLoggerBridge* logger);
void* create_infer_builder(void* logger);
void* create_infer_runtime(void* logger);
void* create_onnx_parser(void* network, void* logger);
void* builder_build_serialized_network(void* builder, void* network, void* config, size_t* out_size);
void builder_config_set_memory_pool_limit(void* config, int32_t pool_type, size_t limit);
void* network_add_concatenation(void* network, void** inputs, int32_t nb_inputs);
void* network_add_assertion(void* network, void* condition, const char* message);
void* network_add_loop(void* network);
void* network_add_if_conditional(void* network);
void* tensor_get_dimensions(void* tensor, int32_t* dims, int32_t* nb_dims);
int32_t tensor_get_type(void* tensor);
void delete_builder(void* builder);
void delete_network(void* network);
void delete_config(void* config);
void delete_runtime(void* runtime);
void delete_engine(void* engine);
void delete_context(void* context);
void delete_parser(void* parser);
void* runtime_deserialize_cuda_engine(void* runtime, const void* data, size_t size);
bool parser_parse(void* parser, const void* data, size_t size);
int32_t parser_get_nb_errors(void* parser);
void* parser_get_error(void* parser, int32_t index);
const char* parser_error_desc(void* error);
#ifdef __cplusplus
}
#endif
#endif