#ifndef DASHEM_H
#define DASHEM_H
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define DASHEM_VERSION_MAJOR 1
#define DASHEM_VERSION_MINOR 1
#define DASHEM_VERSION_PATCH 2
#define DASHEM_EM_DASH_BYTE1 0xE2
#define DASHEM_EM_DASH_BYTE2 0x80
#define DASHEM_EM_DASH_BYTE3 0x94
typedef enum {
DASHEM_CPU_SCALAR = 0,
DASHEM_CPU_SSE2 = 1,
DASHEM_CPU_SSE42 = 2,
DASHEM_CPU_AVX = 4,
DASHEM_CPU_AVX2 = 8,
DASHEM_CPU_AVX512F = 16,
DASHEM_CPU_NEON = 32,
DASHEM_CPU_AVX512VBMI2 = 64,
DASHEM_CPU_BMI2 = 128,
} dashem_cpu_flags_t;
typedef enum {
DASHEM_UTF8_STRICT = 0,
DASHEM_UTF8_SKIP = 1,
DASHEM_UTF8_REPLACE = 2,
} dashem_utf8_mode_t;
uint32_t dashem_detect_cpu_features(void);
int dashem_remove(
const char * restrict input,
size_t input_len,
char * restrict output,
size_t output_capacity,
size_t * restrict output_len
);
static inline size_t dashem_output_size(size_t input_len) {
return input_len;
}
const char* dashem_version(void);
const char* dashem_implementation_name(void);
int dashem_remove_utf8(
const char *input,
size_t input_len,
char *output,
size_t output_capacity,
size_t *output_len,
dashem_utf8_mode_t utf8_mode
);
#ifdef __cplusplus
}
#endif
#endif