diff options
Diffstat (limited to 'unicode/courier-unicode.h.in')
| -rw-r--r-- | unicode/courier-unicode.h.in | 93 | 
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 | 
