1 #ifndef icu4x_Date_D_HPP 2 #define icu4x_Date_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 Calendar; } 15 class Calendar; 16 namespace capi { struct Date; } 17 class Date; 18 namespace capi { struct IsoDate; } 19 class IsoDate; 20 namespace capi { struct WeekCalculator; } 21 class WeekCalculator; 22 struct WeekOf; 23 class CalendarError; 24 class CalendarParseError; 25 class Weekday; 26 } 27 28 29 namespace icu4x { 30 namespace capi { 31 struct Date; 32 } // namespace capi 33 } // namespace 34 35 namespace icu4x { 36 class Date { 37 public: 38 39 inline static diplomat::result<std::unique_ptr<icu4x::Date>, icu4x::CalendarError> from_iso_in_calendar(int32_t year, uint8_t month, uint8_t day, const icu4x::Calendar& calendar); 40 41 inline static diplomat::result<std::unique_ptr<icu4x::Date>, icu4x::CalendarError> from_codes_in_calendar(std::string_view era_code, int32_t year, std::string_view month_code, uint8_t day, const icu4x::Calendar& calendar); 42 43 inline static diplomat::result<std::unique_ptr<icu4x::Date>, icu4x::CalendarParseError> from_string(std::string_view v, const icu4x::Calendar& calendar); 44 45 inline std::unique_ptr<icu4x::Date> to_calendar(const icu4x::Calendar& calendar) const; 46 47 inline std::unique_ptr<icu4x::IsoDate> to_iso() const; 48 49 inline uint16_t day_of_year() const; 50 51 inline uint8_t day_of_month() const; 52 53 inline icu4x::Weekday day_of_week() const; 54 55 inline uint8_t week_of_month(icu4x::Weekday first_weekday) const; 56 57 inline icu4x::WeekOf week_of_year(const icu4x::WeekCalculator& calculator) const; 58 59 inline uint8_t ordinal_month() const; 60 61 inline std::string month_code() const; 62 63 inline uint8_t month_number() const; 64 65 inline bool month_is_leap() const; 66 67 inline int32_t year_in_era() const; 68 69 inline int32_t extended_year() const; 70 71 inline std::string era() const; 72 73 inline uint8_t months_in_year() const; 74 75 inline uint8_t days_in_month() const; 76 77 inline uint16_t days_in_year() const; 78 79 inline std::unique_ptr<icu4x::Calendar> calendar() const; 80 81 inline const icu4x::capi::Date* AsFFI() const; 82 inline icu4x::capi::Date* AsFFI(); 83 inline static const icu4x::Date* FromFFI(const icu4x::capi::Date* ptr); 84 inline static icu4x::Date* FromFFI(icu4x::capi::Date* ptr); 85 inline static void operator delete(void* ptr); 86 private: 87 Date() = delete; 88 Date(const icu4x::Date&) = delete; 89 Date(icu4x::Date&&) noexcept = delete; 90 Date operator=(const icu4x::Date&) = delete; 91 Date operator=(icu4x::Date&&) noexcept = delete; 92 static void operator delete[](void*, size_t) = delete; 93 }; 94 95 } // namespace 96 #endif // icu4x_Date_D_HPP 97