• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef icu4x_IsoDate_D_HPP
2 #define icu4x_IsoDate_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 IsoDate;
32 } // namespace capi
33 } // namespace
34 
35 namespace icu4x {
36 class IsoDate {
37 public:
38 
39   inline static diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarError> create(int32_t year, uint8_t month, uint8_t day);
40 
41   inline static diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarParseError> from_string(std::string_view v);
42 
43   inline std::unique_ptr<icu4x::Date> to_calendar(const icu4x::Calendar& calendar) const;
44 
45   inline std::unique_ptr<icu4x::Date> to_any() const;
46 
47   inline uint16_t day_of_year() const;
48 
49   inline uint8_t day_of_month() const;
50 
51   inline icu4x::Weekday day_of_week() const;
52 
53   inline uint8_t week_of_month(icu4x::Weekday first_weekday) const;
54 
55   inline icu4x::WeekOf week_of_year(const icu4x::WeekCalculator& calculator) const;
56 
57   inline uint8_t month() const;
58 
59   inline int32_t year() const;
60 
61   inline bool is_in_leap_year() const;
62 
63   inline uint8_t months_in_year() const;
64 
65   inline uint8_t days_in_month() const;
66 
67   inline uint16_t days_in_year() const;
68 
69   inline const icu4x::capi::IsoDate* AsFFI() const;
70   inline icu4x::capi::IsoDate* AsFFI();
71   inline static const icu4x::IsoDate* FromFFI(const icu4x::capi::IsoDate* ptr);
72   inline static icu4x::IsoDate* FromFFI(icu4x::capi::IsoDate* ptr);
73   inline static void operator delete(void* ptr);
74 private:
75   IsoDate() = delete;
76   IsoDate(const icu4x::IsoDate&) = delete;
77   IsoDate(icu4x::IsoDate&&) noexcept = delete;
78   IsoDate operator=(const icu4x::IsoDate&) = delete;
79   IsoDate operator=(icu4x::IsoDate&&) noexcept = delete;
80   static void operator delete[](void*, size_t) = delete;
81 };
82 
83 } // namespace
84 #endif // icu4x_IsoDate_D_HPP
85