#ifndef RESULT_H
#define RESULT_H
#include <stddef.h>
typedef enum {
result_error_ok,
result_error_skip,
result_error_system_error,
result_error_compression_error,
result_error_decompression_error,
result_error_round_trip_error,
} result_error_t;
typedef struct {
size_t total_size;
} result_data_t;
typedef struct {
result_error_t internal_error;
result_data_t internal_data;
} result_t;
static result_t result_error(result_error_t error);
static result_t result_data(result_data_t data);
static int result_is_error(result_t result);
static int result_is_skip(result_t result);
static result_error_t result_get_error(result_t result);
static result_data_t result_get_data(result_t result);
static result_t result_error(result_error_t error) {
result_t result = {
.internal_error = error,
};
return result;
}
static result_t result_data(result_data_t data) {
result_t result = {
.internal_error = result_error_ok,
.internal_data = data,
};
return result;
}
static int result_is_error(result_t result) {
return result_get_error(result) != result_error_ok;
}
static int result_is_skip(result_t result) {
return result_get_error(result) == result_error_skip;
}
static result_error_t result_get_error(result_t result) {
return result.internal_error;
}
const char* result_get_error_string(result_t result);
static result_data_t result_get_data(result_t result) {
return result.internal_data;
}
#endif