]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/utrie.h
ICU-66108.tar.gz
[apple/icu.git] / icuSources / common / utrie.h
index 641027a1a3f448ae6e9571ced95131537b470ea6..532ba778eb6ed143d7c23965ef9fd7a0ba016544 100644 (file)
@@ -21,7 +21,6 @@
 
 #include "unicode/utypes.h"
 #include "unicode/utf16.h"
-#include "udataswp.h"
 
 U_CDECL_BEGIN
 
@@ -183,7 +182,7 @@ typedef struct UTrie UTrie;
     ]
 
 /** Internal trie getter from a pair of surrogates */
-#define _UTRIE_GET_FROM_PAIR(trie, data, c, c2, result, resultType) { \
+#define _UTRIE_GET_FROM_PAIR(trie, data, c, c2, result, resultType) UPRV_BLOCK_MACRO_BEGIN { \
     int32_t __offset; \
 \
     /* get data for lead surrogate */ \
@@ -196,18 +195,18 @@ typedef struct UTrie UTrie;
     } else { \
         (result)=(resultType)((trie)->initialValue); \
     } \
-}
+} UPRV_BLOCK_MACRO_END
 
 /** Internal trie getter from a BMP code point, treating a lead surrogate as a normal code point */
 #define _UTRIE_GET_FROM_BMP(trie, data, c16) \
-    _UTRIE_GET_RAW(trie, data, 0xd800<=(c16) && (c16)<=0xdbff ? UTRIE_LEAD_INDEX_DISP : 0, c16);
+    _UTRIE_GET_RAW(trie, data, 0xd800<=(c16) && (c16)<=0xdbff ? UTRIE_LEAD_INDEX_DISP : 0, c16)
 
 /**
  * Internal trie getter from a code point.
  * Could be faster(?) but longer with
  *   if((c32)<=0xd7ff) { (result)=_UTRIE_GET_RAW(trie, data, 0, c32); }
  */
-#define _UTRIE_GET(trie, data, c32, result, resultType) \
+#define _UTRIE_GET(trie, data, c32, result, resultType) UPRV_BLOCK_MACRO_BEGIN { \
     if((uint32_t)(c32)<=0xffff) { \
         /* BMP code points */ \
         (result)=_UTRIE_GET_FROM_BMP(trie, data, c32); \
@@ -218,10 +217,11 @@ typedef struct UTrie UTrie;
     } else { \
         /* out of range */ \
         (result)=(resultType)((trie)->initialValue); \
-    }
+    } \
+} UPRV_BLOCK_MACRO_END
 
 /** Internal next-post-increment: get the next code point (c, c2) and its data */
-#define _UTRIE_NEXT(trie, data, src, limit, c, c2, result, resultType) { \
+#define _UTRIE_NEXT(trie, data, src, limit, c, c2, result, resultType) UPRV_BLOCK_MACRO_BEGIN { \
     (c)=*(src)++; \
     if(!U16_IS_LEAD(c)) { \
         (c2)=0; \
@@ -234,10 +234,10 @@ typedef struct UTrie UTrie;
         (c2)=0; \
         (result)=_UTRIE_GET_RAW((trie), data, UTRIE_LEAD_INDEX_DISP, (c)); \
     } \
-}
+} UPRV_BLOCK_MACRO_END
 
 /** Internal previous: get the previous code point (c, c2) and its data */
-#define _UTRIE_PREVIOUS(trie, data, start, src, c, c2, result, resultType) { \
+#define _UTRIE_PREVIOUS(trie, data, start, src, c, c2, result, resultType) UPRV_BLOCK_MACRO_BEGIN { \
     (c)=*--(src); \
     if(!U16_IS_SURROGATE(c)) { \
         (c2)=0; \
@@ -258,7 +258,7 @@ typedef struct UTrie UTrie;
         (c2)=0; \
         (result)=_UTRIE_GET_RAW((trie), data, UTRIE_LEAD_INDEX_DISP, (c)); \
     } \
-}
+} UPRV_BLOCK_MACRO_END
 
 /* Public UTrie API ---------------------------------------------------------*/
 
@@ -732,17 +732,13 @@ utrie_serialize(UNewTrie *trie, void *data, int32_t capacity,
                 UBool reduceTo16Bits,
                 UErrorCode *pErrorCode);
 
-/**
- * Swap a serialized UTrie.
- * @internal
- */
-U_CAPI int32_t U_EXPORT2
-utrie_swap(const UDataSwapper *ds,
-           const void *inData, int32_t length, void *outData,
-           UErrorCode *pErrorCode);
-
 /* serialization ------------------------------------------------------------ */
 
+// UTrie signature values, in platform endianness and opposite endianness.
+// The UTrie signature ASCII byte values spell "Trie".
+#define UTRIE_SIG       0x54726965
+#define UTRIE_OE_SIG    0x65697254
+
 /**
  * Trie data structure in serialized form:
  *