58 lines
1.1 KiB
C
58 lines
1.1 KiB
C
#ifndef TRANSLITERATION_RULE_H
|
|
#define TRANSLITERATION_RULE_H
|
|
|
|
#include <stdlib.h>
|
|
|
|
typedef enum {
|
|
CONTEXT_TYPE_NONE,
|
|
CONTEXT_TYPE_STRING,
|
|
CONTEXT_TYPE_WORD_BOUNDARY,
|
|
CONTEXT_TYPE_REGEX
|
|
} context_type_t;
|
|
|
|
|
|
typedef struct transliteration_rule_source {
|
|
char *key;
|
|
size_t key_len;
|
|
|
|
context_type_t pre_context_type;
|
|
size_t pre_context_max_len;
|
|
char *pre_context;
|
|
size_t pre_context_len;
|
|
|
|
context_type_t post_context_type;
|
|
size_t post_context_max_len;
|
|
char *post_context;
|
|
size_t post_context_len;
|
|
|
|
char *replacement;
|
|
size_t replacement_len;
|
|
|
|
int move;
|
|
char *group_regex_str;
|
|
size_t group_regex_len;
|
|
} transliteration_rule_source_t;
|
|
|
|
typedef enum {
|
|
STEP_RULESET,
|
|
STEP_TRANSFORM,
|
|
STEP_UNICODE_NORMALIZATION
|
|
} step_type_t;
|
|
|
|
typedef struct transliteration_step_source {
|
|
step_type_t type;
|
|
int rules_start;
|
|
int rules_length;
|
|
char *name;
|
|
} transliteration_step_source_t;
|
|
|
|
typedef struct transliterator_source {
|
|
char *name;
|
|
uint8_t internal;
|
|
int steps_start;
|
|
int steps_length;
|
|
} transliterator_source_t;
|
|
|
|
|
|
#endif
|