#ifndef SECDED_H
#define SECDED_H
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
typedef struct SECDED_64 {
uint8_t encodable_size;
uint8_t code_size;
uint8_t mask;
uint64_t coding_matrix[6];
uint16_t syndromes[64];
} SECDED_64;
SECDED_64 SECDED_64_new(size_t encodable_bits);
void SECDED_64_encode(const SECDED_64 *secded, uint8_t data[8]);
bool SECDED_64_decode(const SECDED_64 *secded, uint8_t data[8]);
typedef struct SECDED_128 {
uint8_t encodable_size;
uint8_t code_size;
uint8_t mask;
uint64_t correction_matrix[14];
uint16_t syndromes[128];
} SECDED_128;
SECDED_128 SECDED_128_new(size_t encodable_bits);
void SECDED_128_encode(const SECDED_128 *secded, uint8_t data[16]);
bool SECDED_128_decode(const SECDED_128 *secded, uint8_t data[16]);
#ifdef SECDED_FEATURES_DYN
typedef struct SECDED_DYN {
} SECDED_DYN;
const SECDED_DYN *SECDED_DYN_new(size_t encodable_bits);
void SECDED_DYN_free(const SECDED_DYN *secded);
void SECDED_DYN_encode(const SECDED_DYN *secded, uint8_t *data, size_t size);
bool SECDED_DYN_decode(const SECDED_DYN *secded, uint8_t *data, size_t size);
#endif
#endif