1 #ifndef icu4x_Collator_D_HPP 2 #define icu4x_Collator_D_HPP 3 4 #include <stdio.h> 5 #include <stdint.h> 6 #include <stddef.h> 7 #include <stdbool.h> 8 #include <memory> 9 #include <functional> 10 #include <optional> 11 #include "../diplomat_runtime.hpp" 12 13 namespace icu4x { 14 namespace capi { struct Collator; } 15 class Collator; 16 namespace capi { struct DataProvider; } 17 class DataProvider; 18 namespace capi { struct Locale; } 19 class Locale; 20 struct CollatorOptionsV1; 21 struct CollatorResolvedOptionsV1; 22 class DataError; 23 } 24 25 26 namespace icu4x { 27 namespace capi { 28 struct Collator; 29 } // namespace capi 30 } // namespace 31 32 namespace icu4x { 33 class Collator { 34 public: 35 36 inline static diplomat::result<std::unique_ptr<icu4x::Collator>, icu4x::DataError> create_v1(const icu4x::Locale& locale, icu4x::CollatorOptionsV1 options); 37 38 inline static diplomat::result<std::unique_ptr<icu4x::Collator>, icu4x::DataError> create_v1_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale, icu4x::CollatorOptionsV1 options); 39 40 inline int8_t compare(std::string_view left, std::string_view right) const; 41 42 inline int8_t compare16(std::u16string_view left, std::u16string_view right) const; 43 44 inline icu4x::CollatorResolvedOptionsV1 resolved_options_v1() const; 45 46 inline const icu4x::capi::Collator* AsFFI() const; 47 inline icu4x::capi::Collator* AsFFI(); 48 inline static const icu4x::Collator* FromFFI(const icu4x::capi::Collator* ptr); 49 inline static icu4x::Collator* FromFFI(icu4x::capi::Collator* ptr); 50 inline static void operator delete(void* ptr); 51 private: 52 Collator() = delete; 53 Collator(const icu4x::Collator&) = delete; 54 Collator(icu4x::Collator&&) noexcept = delete; 55 Collator operator=(const icu4x::Collator&) = delete; 56 Collator operator=(icu4x::Collator&&) noexcept = delete; 57 static void operator delete[](void*, size_t) = delete; 58 }; 59 60 } // namespace 61 #endif // icu4x_Collator_D_HPP 62