• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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