summaryrefslogtreecommitdiffstats
path: root/unicode/courier-unicode.h.in
diff options
context:
space:
mode:
Diffstat (limited to 'unicode/courier-unicode.h.in')
-rw-r--r--unicode/courier-unicode.h.in93
1 files changed, 61 insertions, 32 deletions
diff --git a/unicode/courier-unicode.h.in b/unicode/courier-unicode.h.in
index cc9dbbb..3de76d3 100644
--- a/unicode/courier-unicode.h.in
+++ b/unicode/courier-unicode.h.in
@@ -548,6 +548,24 @@ size_t unicode_wbscan_end(unicode_wbscan_info_t i);
#define UNICODE_LRO 0x202d /* Left-to-right override */
#define UNICODE_PDF 0x202c /* Pop directional override */
+#ifdef __cplusplus
+#if __cplusplus >= 201103L
+namespace unicode {
+ namespace literals {
+
+ constexpr char32_t LRM[]={UNICODE_LRM, 0};
+ constexpr char32_t RLM[]={UNICODE_RLM, 0};
+ constexpr char32_t ALM[]={UNICODE_ALM, 0};
+ constexpr char32_t LRI[]={UNICODE_LRI, 0};
+ constexpr char32_t RLI[]={UNICODE_RLI, 0};
+ constexpr char32_t PDI[]={UNICODE_PDI, 0};
+ constexpr char32_t RLO[]={UNICODE_RLO, 0};
+ constexpr char32_t LRO[]={UNICODE_LRO, 0};
+ constexpr char32_t PDF[]={UNICODE_PDF, 0};
+ }
+}
+#endif
+#endif
typedef char unicode_bidi_bracket_type_t;
@@ -608,19 +626,50 @@ typedef enum {
extern enum_bidi_type_t unicode_bidi_type(char32_t c);
+/* Bitmask options to unicode_bidi_cleanup */
+
+/*
+ In addition to removing embedding, override, and boundary-neutral
+ characters also remove isolation markers and implicit markers.
+*/
+
+#define UNICODE_BIDI_CLEANUP_EXTRA 1
+
+/*
+ Replace all characters classified as paragraph separators by a newline
+ character.
+*/
+
+#define UNICODE_BIDI_CLEANUP_BNL 2
+
+/*
+ Options for canonical rendering order.
+*/
+
+#define UNICODE_BIDI_CLEANUP_CANONICAL \
+ (UNICODE_BIDI_CLEANUP_EXTRA | UNICODE_BIDI_CLEANUP_BNL)
+
+#ifdef __cplusplus
+#if __cplusplus >= 201103L
+namespace unicode {
+ namespace literals {
+ constexpr int CLEANUP_EXTRA=UNICODE_BIDI_CLEANUP_EXTRA;
+
+ constexpr int CLEANUP_BNL=UNICODE_BIDI_CLEANUP_BNL;
+
+ constexpr int CLEANUP_CANONICAL=UNICODE_BIDI_CLEANUP_CANONICAL;
+ }
+}
+#endif
+#endif
+
extern size_t unicode_bidi_cleanup(char32_t *string,
unicode_bidi_level_t *levels,
size_t n,
+ int options,
void (*removed_callback)(size_t, void *),
void *);
-extern size_t unicode_bidi_extra_cleanup(char32_t *string,
- unicode_bidi_level_t *levels,
- size_t n,
- void (*removed_callback)(size_t,
- void *),
- void *);
-
extern void unicode_bidi_logical_order(char32_t *string,
unicode_bidi_level_t *levels,
size_t n,
@@ -2147,7 +2196,8 @@ void bidi_reorder(std::vector<unicode_bidi_level_t> &levels,
void bidi_cleanup(std::u32string &string,
const std::function<void (size_t)> &removed_callback=
- [](size_t) {});
+ [](size_t) {},
+ int cleanup_options=0);
//! Also remove them from the embedding direction level buffer.
@@ -2156,28 +2206,8 @@ void bidi_cleanup(std::u32string &string,
int bidi_cleanup(std::u32string &string,
std::vector<unicode_bidi_level_t> &levels,
const std::function<void (size_t)> &removed_callback=
- [](size_t) {});
-
-
-//! Remove directional markers and isolation markers.
-
-//! Removes them from the string, in place. Optional lambda gets notified
-//! of the index (in the original string, of each removed marker.
-
-void bidi_extra_cleanup(std::u32string &string,
- const std::function<void (size_t)>
- &removed_callback=
- [](size_t) {});
-
-//! Also remove them from the embedding direction level buffer.
-
-//! Returns non-0 in case of non-matching level buffer size.
-
-int bidi_extra_cleanup(std::u32string &string,
- std::vector<unicode_bidi_level_t> &levels,
- const std::function<void (size_t)>
- &removed_callback=
- [](size_t) {});
+ [](size_t) {},
+ int cleanup_options=0);
//! Convert Unicode string from canonical rendering order to logical order.
int bidi_logical_order(std::u32string &string,
@@ -2189,8 +2219,7 @@ int bidi_logical_order(std::u32string &string,
//! Convert Unicode string from canonical rendering order to logical order.
void bidi_logical_order(std::vector<unicode_bidi_level_t> &levels,
unicode_bidi_level_t paragraph_embedding,
- const std::function<void (size_t, size_t)>
- &lambda);
+ const std::function<void (size_t, size_t)> &lambda);
//! Embed directional and isolation markers