1 #ifndef icu4x_CodePointSetBuilder_D_HPP 2 #define icu4x_CodePointSetBuilder_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 CodePointSetBuilder; } 15 class CodePointSetBuilder; 16 namespace capi { struct CodePointSetData; } 17 class CodePointSetData; 18 } 19 20 21 namespace icu4x { 22 namespace capi { 23 struct CodePointSetBuilder; 24 } // namespace capi 25 } // namespace 26 27 namespace icu4x { 28 class CodePointSetBuilder { 29 public: 30 31 inline static std::unique_ptr<icu4x::CodePointSetBuilder> create(); 32 33 inline std::unique_ptr<icu4x::CodePointSetData> build(); 34 35 inline void complement(); 36 37 inline bool is_empty() const; 38 39 inline void add_char(char32_t ch); 40 41 inline void add_inclusive_range(char32_t start, char32_t end); 42 43 inline void add_set(const icu4x::CodePointSetData& data); 44 45 inline void remove_char(char32_t ch); 46 47 inline void remove_inclusive_range(char32_t start, char32_t end); 48 49 inline void remove_set(const icu4x::CodePointSetData& data); 50 51 inline void retain_char(char32_t ch); 52 53 inline void retain_inclusive_range(char32_t start, char32_t end); 54 55 inline void retain_set(const icu4x::CodePointSetData& data); 56 57 inline void complement_char(char32_t ch); 58 59 inline void complement_inclusive_range(char32_t start, char32_t end); 60 61 inline void complement_set(const icu4x::CodePointSetData& data); 62 63 inline const icu4x::capi::CodePointSetBuilder* AsFFI() const; 64 inline icu4x::capi::CodePointSetBuilder* AsFFI(); 65 inline static const icu4x::CodePointSetBuilder* FromFFI(const icu4x::capi::CodePointSetBuilder* ptr); 66 inline static icu4x::CodePointSetBuilder* FromFFI(icu4x::capi::CodePointSetBuilder* ptr); 67 inline static void operator delete(void* ptr); 68 private: 69 CodePointSetBuilder() = delete; 70 CodePointSetBuilder(const icu4x::CodePointSetBuilder&) = delete; 71 CodePointSetBuilder(icu4x::CodePointSetBuilder&&) noexcept = delete; 72 CodePointSetBuilder operator=(const icu4x::CodePointSetBuilder&) = delete; 73 CodePointSetBuilder operator=(icu4x::CodePointSetBuilder&&) noexcept = delete; 74 static void operator delete[](void*, size_t) = delete; 75 }; 76 77 } // namespace 78 #endif // icu4x_CodePointSetBuilder_D_HPP 79