XenevaOS
Loading...
Searching...
No Matches
Macros | Enumerations | Functions | Variables
libunicode.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <assert.h>
#include "cutils.h"
#include "libunicode.h"
#include "libunicode-table.h"
Include dependency graph for libunicode.c:

Macros

#define UNICODE_INDEX_BLOCK_LEN   32
 
#define CASE_U   (1 << 0)
 
#define CASE_L   (1 << 1)
 
#define CASE_F   (1 << 2)
 
#define MR(x)   (1 << RUN_TYPE_ ## x)
 
#define UNICODE_DECOMP_LEN_MAX   18
 
#define M(id)   (1U << UNICODE_GC_ ## id)
 
#define POP_STACK_LEN_MAX   4
 
#define S   UNICODE_C_SPACE
 
#define D   UNICODE_C_DIGIT
 
#define X   UNICODE_C_XDIGIT
 
#define U   UNICODE_C_UPPER
 
#define L   UNICODE_C_LOWER
 
#define _   UNICODE_C_UNDER
 
#define d   UNICODE_C_DOLLAR
 
#define SEQ_MAX_LEN   16
 

Enumerations

enum  {
  RUN_TYPE_U , RUN_TYPE_L , RUN_TYPE_UF , RUN_TYPE_LF ,
  RUN_TYPE_UL , RUN_TYPE_LSU , RUN_TYPE_U2L_399_EXT2 , RUN_TYPE_UF_D20 ,
  RUN_TYPE_UF_D1_EXT , RUN_TYPE_U_EXT , RUN_TYPE_LF_EXT , RUN_TYPE_UF_EXT2 ,
  RUN_TYPE_LF_EXT2 , RUN_TYPE_UF_EXT3
}
 
enum  DecompTypeEnum {
  DECOMP_TYPE_C1 , DECOMP_TYPE_L1 , DECOMP_TYPE_L2 , DECOMP_TYPE_L3 ,
  DECOMP_TYPE_L4 , DECOMP_TYPE_L5 , DECOMP_TYPE_L6 , DECOMP_TYPE_L7 ,
  DECOMP_TYPE_LL1 , DECOMP_TYPE_LL2 , DECOMP_TYPE_S1 , DECOMP_TYPE_S2 ,
  DECOMP_TYPE_S3 , DECOMP_TYPE_S4 , DECOMP_TYPE_S5 , DECOMP_TYPE_I1 ,
  DECOMP_TYPE_I2_0 , DECOMP_TYPE_I2_1 , DECOMP_TYPE_I3_1 , DECOMP_TYPE_I3_2 ,
  DECOMP_TYPE_I4_1 , DECOMP_TYPE_I4_2 , DECOMP_TYPE_B1 , DECOMP_TYPE_B2 ,
  DECOMP_TYPE_B3 , DECOMP_TYPE_B4 , DECOMP_TYPE_B5 , DECOMP_TYPE_B6 ,
  DECOMP_TYPE_B7 , DECOMP_TYPE_B8 , DECOMP_TYPE_B18 , DECOMP_TYPE_LS2 ,
  DECOMP_TYPE_PAT3 , DECOMP_TYPE_S2_UL , DECOMP_TYPE_LS2_UL
}
 
enum  PropOPEnum {
  POP_GC , POP_PROP , POP_CASE , POP_UNION ,
  POP_INTER , POP_XOR , POP_INVERT , POP_END
}
 

Functions

int lre_case_conv (uint32_t *res, uint32_t c, int conv_type)
 
int lre_canonicalize (uint32_t c, BOOL is_unicode)
 
BOOL lre_is_cased (uint32_t c)
 
BOOL lre_is_case_ignorable (uint32_t c)
 
void cr_init (CharRange *cr, void *mem_opaque, DynBufReallocFunc *realloc_func)
 
void cr_free (CharRange *cr)
 
int cr_realloc (CharRange *cr, int size)
 
int cr_copy (CharRange *cr, const CharRange *cr1)
 
int cr_op (CharRange *cr, const uint32_t *a_pt, int a_len, const uint32_t *b_pt, int b_len, int op)
 
int cr_op1 (CharRange *cr, const uint32_t *b_pt, int b_len, int op)
 
int cr_invert (CharRange *cr)
 
int cr_regexp_canonicalize (CharRange *cr, BOOL is_unicode)
 
BOOL lre_is_id_start (uint32_t c)
 
BOOL lre_is_id_continue (uint32_t c)
 
int unicode_normalize (uint32_t **pdst, const uint32_t *src, int src_len, UnicodeNormalizationEnum n_type, void *opaque, DynBufReallocFunc *realloc_func)
 
int unicode_script (CharRange *cr, const char *script_name, BOOL is_ext)
 
int unicode_general_category (CharRange *cr, const char *gc_name)
 
int unicode_prop (CharRange *cr, const char *prop_name)
 
BOOL lre_is_space_non_ascii (uint32_t c)
 
int unicode_sequence_prop (const char *prop_name, UnicodeSequencePropCB *cb, void *opaque, CharRange *cr)
 

Variables

uint8_t const lre_ctype_bits [256]
 

Macro Definition Documentation

◆ _

#define _   UNICODE_C_UNDER

◆ CASE_F

#define CASE_F   (1 << 2)

◆ CASE_L

#define CASE_L   (1 << 1)

◆ CASE_U

#define CASE_U   (1 << 0)

◆ D

#define D   UNICODE_C_DIGIT

◆ d

#define d   UNICODE_C_DOLLAR

◆ L

#define L   UNICODE_C_LOWER

◆ M

#define M (   id)    (1U << UNICODE_GC_ ## id)

◆ MR

#define MR (   x)    (1 << RUN_TYPE_ ## x)

◆ POP_STACK_LEN_MAX

#define POP_STACK_LEN_MAX   4

◆ S

#define S   UNICODE_C_SPACE

◆ SEQ_MAX_LEN

#define SEQ_MAX_LEN   16

◆ U

#define U   UNICODE_C_UPPER

◆ UNICODE_DECOMP_LEN_MAX

#define UNICODE_DECOMP_LEN_MAX   18

◆ UNICODE_INDEX_BLOCK_LEN

#define UNICODE_INDEX_BLOCK_LEN   32

◆ X

#define X   UNICODE_C_XDIGIT

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
RUN_TYPE_U 
RUN_TYPE_L 
RUN_TYPE_UF 
RUN_TYPE_LF 
RUN_TYPE_UL 
RUN_TYPE_LSU 
RUN_TYPE_U2L_399_EXT2 
RUN_TYPE_UF_D20 
RUN_TYPE_UF_D1_EXT 
RUN_TYPE_U_EXT 
RUN_TYPE_LF_EXT 
RUN_TYPE_UF_EXT2 
RUN_TYPE_LF_EXT2 
RUN_TYPE_UF_EXT3 

◆ DecompTypeEnum

Enumerator
DECOMP_TYPE_C1 
DECOMP_TYPE_L1 
DECOMP_TYPE_L2 
DECOMP_TYPE_L3 
DECOMP_TYPE_L4 
DECOMP_TYPE_L5 
DECOMP_TYPE_L6 
DECOMP_TYPE_L7 
DECOMP_TYPE_LL1 
DECOMP_TYPE_LL2 
DECOMP_TYPE_S1 
DECOMP_TYPE_S2 
DECOMP_TYPE_S3 
DECOMP_TYPE_S4 
DECOMP_TYPE_S5 
DECOMP_TYPE_I1 
DECOMP_TYPE_I2_0 
DECOMP_TYPE_I2_1 
DECOMP_TYPE_I3_1 
DECOMP_TYPE_I3_2 
DECOMP_TYPE_I4_1 
DECOMP_TYPE_I4_2 
DECOMP_TYPE_B1 
DECOMP_TYPE_B2 
DECOMP_TYPE_B3 
DECOMP_TYPE_B4 
DECOMP_TYPE_B5 
DECOMP_TYPE_B6 
DECOMP_TYPE_B7 
DECOMP_TYPE_B8 
DECOMP_TYPE_B18 
DECOMP_TYPE_LS2 
DECOMP_TYPE_PAT3 
DECOMP_TYPE_S2_UL 
DECOMP_TYPE_LS2_UL 

◆ PropOPEnum

enum PropOPEnum
Enumerator
POP_GC 
POP_PROP 
POP_CASE 
POP_UNION 
POP_INTER 
POP_XOR 
POP_INVERT 
POP_END 

Function Documentation

◆ cr_copy()

int cr_copy ( CharRange *  cr,
const CharRange *  cr1 
)

◆ cr_free()

void cr_free ( CharRange *  cr)

◆ cr_init()

void cr_init ( CharRange *  cr,
void *  mem_opaque,
DynBufReallocFunc *  realloc_func 
)

◆ cr_invert()

int cr_invert ( CharRange *  cr)

◆ cr_op()

int cr_op ( CharRange *  cr,
const uint32_t *  a_pt,
int  a_len,
const uint32_t *  b_pt,
int  b_len,
int  op 
)

◆ cr_op1()

int cr_op1 ( CharRange *  cr,
const uint32_t *  b_pt,
int  b_len,
int  op 
)

◆ cr_realloc()

int cr_realloc ( CharRange *  cr,
int  size 
)

◆ cr_regexp_canonicalize()

int cr_regexp_canonicalize ( CharRange *  cr,
BOOL  is_unicode 
)

◆ lre_canonicalize()

int lre_canonicalize ( uint32_t  c,
BOOL  is_unicode 
)

◆ lre_case_conv()

int lre_case_conv ( uint32_t *  res,
uint32_t  c,
int  conv_type 
)

◆ lre_is_case_ignorable()

BOOL lre_is_case_ignorable ( uint32_t  c)

◆ lre_is_cased()

BOOL lre_is_cased ( uint32_t  c)

◆ lre_is_id_continue()

BOOL lre_is_id_continue ( uint32_t  c)

◆ lre_is_id_start()

BOOL lre_is_id_start ( uint32_t  c)

◆ lre_is_space_non_ascii()

BOOL lre_is_space_non_ascii ( uint32_t  c)

◆ unicode_general_category()

int unicode_general_category ( CharRange *  cr,
const char *  gc_name 
)

◆ unicode_normalize()

int unicode_normalize ( uint32_t **  pdst,
const uint32_t *  src,
int  src_len,
UnicodeNormalizationEnum  n_type,
void *  opaque,
DynBufReallocFunc *  realloc_func 
)

◆ unicode_prop()

int unicode_prop ( CharRange *  cr,
const char *  prop_name 
)

◆ unicode_script()

int unicode_script ( CharRange *  cr,
const char *  script_name,
BOOL  is_ext 
)

◆ unicode_sequence_prop()

int unicode_sequence_prop ( const char *  prop_name,
UnicodeSequencePropCB *  cb,
void *  opaque,
CharRange *  cr 
)

Variable Documentation

◆ lre_ctype_bits

uint8_t const lre_ctype_bits[256]