diff options
author | Taku Kudo <taku@google.com> | 2020-10-13 19:39:14 +0300 |
---|---|---|
committer | Taku Kudo <taku@google.com> | 2020-10-13 19:39:14 +0300 |
commit | e59c835e45a2e52cc60eaa0d7649994630178674 (patch) | |
tree | b13b6d84e3247d1e32ec9399c70bf5e646f31044 | |
parent | 33a977f8fab881e6ea2adf7b9241035481651007 (diff) |
changed macro big endian
-rw-r--r-- | src/normalizer.cc | 8 | ||||
-rw-r--r-- | src/util.h | 6 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/normalizer.cc b/src/normalizer.cc index 7fe90a2..3fe919b 100644 --- a/src/normalizer.cc +++ b/src/normalizer.cc @@ -51,7 +51,7 @@ void Normalizer::Init() { LOG(INFO) << "precompiled_charsmap is empty. use identity normalization."; } else { absl::string_view trie_blob, normalized; -#ifdef __BIG_ENDIAN__ +#ifdef IS_BIG_ENDIAN status_ = DecodePrecompiledCharsMap(index, &trie_blob, &normalized, &precompiled_charsmap_buffer_); #else @@ -264,7 +264,7 @@ std::string Normalizer::EncodePrecompiledCharsMap( blob.append(trie_blob.data(), trie_blob.size()); blob.append(normalized.data(), normalized.size()); -#ifdef __BIG_ENDIAN__ +#ifdef IS_BIG_ENDIAN uint32 *data = reinterpret_cast<uint32 *>(const_cast<char *>(blob.data())); for (int i = 0; i <= trie_blob.size() / 4; ++i) data[i] = util::Swap32(data[i]); @@ -286,7 +286,7 @@ util::Status Normalizer::DecodePrecompiledCharsMap( return util::InternalError("Blob for normalization rule is broken."); } -#ifdef __BIG_ENDIAN__ +#ifdef IS_BIG_ENDIAN trie_blob_size = util::Swap32(trie_blob_size); #endif @@ -295,7 +295,7 @@ util::Status Normalizer::DecodePrecompiledCharsMap( blob.remove_prefix(sizeof(trie_blob_size)); -#ifdef __BIG_ENDIAN__ +#ifdef IS_BIG_ENDIAN buffer->assign(blob.data(), trie_blob_size); uint32 *data = reinterpret_cast<uint32 *>(const_cast<char *>(buffer->data())); for (int i = 0; i < trie_blob_size / 4; ++i) data[i] = util::Swap32(data[i]); @@ -36,6 +36,10 @@ #include <pthread.h> #endif +#if __BYTE_ORDER == __BIG_ENDIAN +#define IS_BIG_ENDIAN +#endif + namespace sentencepiece { template <typename T> @@ -412,7 +416,9 @@ class StatusBuilder { #define CHECK_GT_OR_RETURN(a, b) CHECK_OR_RETURN((a) > (b)) #define CHECK_LT_OR_RETURN(a, b) CHECK_OR_RETURN((a) < (b)) +#ifdef IS_BIG_ENDIAN inline uint32 Swap32(uint32 x) { return __builtin_bswap32(x); } +#endif } // namespace util |