1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /********************************************************************
4  * COPYRIGHT:
5  * Copyright (c) 1997-2016, International Business Machines Corporation and
6  * others. All Rights Reserved.
7  ********************************************************************/
8 /*   file name:  cbiditst.h
9 *   encoding:   UTF-8
10 *   tab size:   8 (not used)
11 *   indentation:4
12 *
13 *   created on: 1999sep22
14 *   created by: Markus W. Scherer
15 */
16 
17 #ifndef CBIDITST_H
18 #define CBIDITST_H
19 
20 #include "unicode/utypes.h"
21 #include "unicode/uchar.h"
22 #include "unicode/ubidi.h"
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #define MAX_STRING_LENGTH 200
29 
30 /*  Comparing the description of the BiDi algorithm with this implementation
31     is easier with the same names for the BiDi types in the code as there.
32     See UCharDirection in uchar.h .
33 */
34 #define L   U_LEFT_TO_RIGHT
35 #define R   U_RIGHT_TO_LEFT
36 #define EN  U_EUROPEAN_NUMBER
37 #define ES  U_EUROPEAN_NUMBER_SEPARATOR
38 #define ET  U_EUROPEAN_NUMBER_TERMINATOR
39 #define AN  U_ARABIC_NUMBER
40 #define CS  U_COMMON_NUMBER_SEPARATOR
41 #define B   U_BLOCK_SEPARATOR
42 #define S   U_SEGMENT_SEPARATOR
43 #define WS  U_WHITE_SPACE_NEUTRAL
44 #define ON  U_OTHER_NEUTRAL
45 #define LRE U_LEFT_TO_RIGHT_EMBEDDING
46 #define LRO U_LEFT_TO_RIGHT_OVERRIDE
47 #define AL  U_RIGHT_TO_LEFT_ARABIC
48 #define RLE U_RIGHT_TO_LEFT_EMBEDDING
49 #define RLO U_RIGHT_TO_LEFT_OVERRIDE
50 #define PDF U_POP_DIRECTIONAL_FORMAT
51 #define NSM U_DIR_NON_SPACING_MARK
52 #define BN  U_BOUNDARY_NEUTRAL
53 #define FSI U_FIRST_STRONG_ISOLATE
54 #define LRI U_LEFT_TO_RIGHT_ISOLATE
55 #define RLI U_RIGHT_TO_LEFT_ISOLATE
56 #define PDI U_POP_DIRECTIONAL_ISOLATE
57 
58 extern const char * const
59 dirPropNames[U_CHAR_DIRECTION_COUNT];
60 
61 extern UChar
62 charFromDirProp[U_CHAR_DIRECTION_COUNT];
63 
64 typedef struct {
65     const uint8_t *text;
66     int32_t length;
67     UBiDiLevel paraLevel;
68     int32_t lineStart, lineLimit;
69     UBiDiDirection direction;
70     UBiDiLevel resultLevel;
71     const UBiDiLevel *levels;
72     const uint8_t *visualMap;
73 } BiDiTestData;
74 
75 extern const BiDiTestData
76 tests[];
77 
78 extern const int
79 bidiTestCount;
80 
81 #ifdef __cplusplus
82 }
83 #endif
84 
85 #endif
86