1 #pragma once 2 3 typedef struct GX_CANONICAL_DECOMPOSE_MAP_STRUCT 4 { 5 ULONG gx_canonical_decompose_map_code; 6 ULONG gx_canonical_decompose_map[2]; 7 }GX_CANONICAL_DECOMPOSE_MAP; 8 9 typedef struct GX_CANONICAL_COMBINING_CLASS_STRUCT 10 { 11 ULONG gx_canonical_combining_class_code; 12 GX_UBYTE gx_canonical_combining_class; 13 }GX_CANONICAL_COMBINING_CLASS; 14 15 typedef struct GX_UNICODE_RANGE_STRUCT 16 { 17 ULONG gx_unicode_range_start; 18 ULONG gx_unicode_range_end; 19 }GX_UNICODE_RANGE; 20 21 typedef struct GX_CANONICAL_UNIT_STRUCT 22 { 23 ULONG gx_canonical_unit_code_point; 24 GX_UBYTE gx_canonical_unit_combining_class; 25 } GX_CANONICAL_UNIT; 26 27 typedef struct GX_CANONICAL_CONTEXT_STRUCT 28 { 29 ULONG *gx_canonical_context_code_list; 30 UINT gx_canonical_context_code_count; 31 GX_CANONICAL_UNIT *gx_canonical_context_unit_list; 32 UINT gx_canonical_context_unit_count; 33 } GX_CANONICAL_CONTEXT; 34 35 #define GX_NORMALIZATION_FORM_NO 0 /* The code point cannot occur in the normalization form. */ 36 #define GX_NORMALIZATION_FORM_YES 1 /* The code point is a starter and can occur in the normalization form. */ 37 #define GX_NORMALIZATION_FORM_MAYBE 2 38 39 UINT gx_studio_canonical_normalize(GX_CONST GX_STRING *string, GX_STRING *normalised_string); 40