diff --git a/temporal_capi/bindings/c/PlainMonthDay.h b/temporal_capi/bindings/c/PlainMonthDay.h index 64c5dfd73..96f001b14 100644 --- a/temporal_capi/bindings/c/PlainMonthDay.h +++ b/temporal_capi/bindings/c/PlainMonthDay.h @@ -49,8 +49,12 @@ uint8_t temporal_rs_PlainMonthDay_day(const PlainMonthDay* self); const Calendar* temporal_rs_PlainMonthDay_calendar(const PlainMonthDay* self); +uint8_t temporal_rs_PlainMonthDay_month(const PlainMonthDay* self); + void temporal_rs_PlainMonthDay_month_code(const PlainMonthDay* self, DiplomatWrite* write); +int32_t temporal_rs_PlainMonthDay_reference_year(const PlainMonthDay* self); + typedef struct temporal_rs_PlainMonthDay_to_plain_date_result {union {PlainDate* ok; TemporalError err;}; bool is_ok;} temporal_rs_PlainMonthDay_to_plain_date_result; temporal_rs_PlainMonthDay_to_plain_date_result temporal_rs_PlainMonthDay_to_plain_date(const PlainMonthDay* self, PartialDate_option year); diff --git a/temporal_capi/bindings/c/PlainYearMonth.h b/temporal_capi/bindings/c/PlainYearMonth.h index 2283264e3..2f633b803 100644 --- a/temporal_capi/bindings/c/PlainYearMonth.h +++ b/temporal_capi/bindings/c/PlainYearMonth.h @@ -64,6 +64,8 @@ void temporal_rs_PlainYearMonth_era(const PlainYearMonth* self, DiplomatWrite* w typedef struct temporal_rs_PlainYearMonth_era_year_result {union {int32_t ok; }; bool is_ok;} temporal_rs_PlainYearMonth_era_year_result; temporal_rs_PlainYearMonth_era_year_result temporal_rs_PlainYearMonth_era_year(const PlainYearMonth* self); +uint8_t temporal_rs_PlainYearMonth_reference_day(const PlainYearMonth* self); + const Calendar* temporal_rs_PlainYearMonth_calendar(const PlainYearMonth* self); typedef struct temporal_rs_PlainYearMonth_add_result {union {PlainYearMonth* ok; TemporalError err;}; bool is_ok;} temporal_rs_PlainYearMonth_add_result; diff --git a/temporal_capi/bindings/cpp/temporal_rs/PlainMonthDay.d.hpp b/temporal_capi/bindings/cpp/temporal_rs/PlainMonthDay.d.hpp index 5638252ac..fd505d5a6 100644 --- a/temporal_capi/bindings/cpp/temporal_rs/PlainMonthDay.d.hpp +++ b/temporal_capi/bindings/cpp/temporal_rs/PlainMonthDay.d.hpp @@ -59,10 +59,14 @@ class PlainMonthDay { inline const temporal_rs::Calendar& calendar() const; + inline uint8_t month() const; + inline std::string month_code() const; template inline void month_code_write(W& writeable_output) const; + inline int32_t reference_year() const; + inline temporal_rs::diplomat::result, temporal_rs::TemporalError> to_plain_date(std::optional year) const; inline temporal_rs::diplomat::result epoch_ms_for(temporal_rs::TimeZone time_zone) const; diff --git a/temporal_capi/bindings/cpp/temporal_rs/PlainMonthDay.hpp b/temporal_capi/bindings/cpp/temporal_rs/PlainMonthDay.hpp index 01e409f4c..3628a8f49 100644 --- a/temporal_capi/bindings/cpp/temporal_rs/PlainMonthDay.hpp +++ b/temporal_capi/bindings/cpp/temporal_rs/PlainMonthDay.hpp @@ -52,8 +52,12 @@ namespace capi { const temporal_rs::capi::Calendar* temporal_rs_PlainMonthDay_calendar(const temporal_rs::capi::PlainMonthDay* self); + uint8_t temporal_rs_PlainMonthDay_month(const temporal_rs::capi::PlainMonthDay* self); + void temporal_rs_PlainMonthDay_month_code(const temporal_rs::capi::PlainMonthDay* self, temporal_rs::diplomat::capi::DiplomatWrite* write); + int32_t temporal_rs_PlainMonthDay_reference_year(const temporal_rs::capi::PlainMonthDay* self); + typedef struct temporal_rs_PlainMonthDay_to_plain_date_result {union {temporal_rs::capi::PlainDate* ok; temporal_rs::capi::TemporalError err;}; bool is_ok;} temporal_rs_PlainMonthDay_to_plain_date_result; temporal_rs_PlainMonthDay_to_plain_date_result temporal_rs_PlainMonthDay_to_plain_date(const temporal_rs::capi::PlainMonthDay* self, temporal_rs::capi::PartialDate_option year); @@ -126,6 +130,11 @@ inline const temporal_rs::Calendar& temporal_rs::PlainMonthDay::calendar() const return *temporal_rs::Calendar::FromFFI(result); } +inline uint8_t temporal_rs::PlainMonthDay::month() const { + auto result = temporal_rs::capi::temporal_rs_PlainMonthDay_month(this->AsFFI()); + return result; +} + inline std::string temporal_rs::PlainMonthDay::month_code() const { std::string output; temporal_rs::diplomat::capi::DiplomatWrite write = temporal_rs::diplomat::WriteFromString(output); @@ -140,6 +149,11 @@ inline void temporal_rs::PlainMonthDay::month_code_write(W& writeable) const { &write); } +inline int32_t temporal_rs::PlainMonthDay::reference_year() const { + auto result = temporal_rs::capi::temporal_rs_PlainMonthDay_reference_year(this->AsFFI()); + return result; +} + inline temporal_rs::diplomat::result, temporal_rs::TemporalError> temporal_rs::PlainMonthDay::to_plain_date(std::optional year) const { auto result = temporal_rs::capi::temporal_rs_PlainMonthDay_to_plain_date(this->AsFFI(), year.has_value() ? (temporal_rs::capi::PartialDate_option{ { year.value().AsFFI() }, true }) : (temporal_rs::capi::PartialDate_option{ {}, false })); diff --git a/temporal_capi/bindings/cpp/temporal_rs/PlainYearMonth.d.hpp b/temporal_capi/bindings/cpp/temporal_rs/PlainYearMonth.d.hpp index b6ea92483..585dea504 100644 --- a/temporal_capi/bindings/cpp/temporal_rs/PlainYearMonth.d.hpp +++ b/temporal_capi/bindings/cpp/temporal_rs/PlainYearMonth.d.hpp @@ -78,6 +78,8 @@ class PlainYearMonth { inline std::optional era_year() const; + inline uint8_t reference_day() const; + inline const temporal_rs::Calendar& calendar() const; inline temporal_rs::diplomat::result, temporal_rs::TemporalError> add(const temporal_rs::Duration& duration, temporal_rs::ArithmeticOverflow overflow) const; diff --git a/temporal_capi/bindings/cpp/temporal_rs/PlainYearMonth.hpp b/temporal_capi/bindings/cpp/temporal_rs/PlainYearMonth.hpp index 5f66d553e..2d499756b 100644 --- a/temporal_capi/bindings/cpp/temporal_rs/PlainYearMonth.hpp +++ b/temporal_capi/bindings/cpp/temporal_rs/PlainYearMonth.hpp @@ -67,6 +67,8 @@ namespace capi { typedef struct temporal_rs_PlainYearMonth_era_year_result {union {int32_t ok; }; bool is_ok;} temporal_rs_PlainYearMonth_era_year_result; temporal_rs_PlainYearMonth_era_year_result temporal_rs_PlainYearMonth_era_year(const temporal_rs::capi::PlainYearMonth* self); + uint8_t temporal_rs_PlainYearMonth_reference_day(const temporal_rs::capi::PlainYearMonth* self); + const temporal_rs::capi::Calendar* temporal_rs_PlainYearMonth_calendar(const temporal_rs::capi::PlainYearMonth* self); typedef struct temporal_rs_PlainYearMonth_add_result {union {temporal_rs::capi::PlainYearMonth* ok; temporal_rs::capi::TemporalError err;}; bool is_ok;} temporal_rs_PlainYearMonth_add_result; @@ -204,6 +206,11 @@ inline std::optional temporal_rs::PlainYearMonth::era_year() const { return result.is_ok ? std::optional(result.ok) : std::nullopt; } +inline uint8_t temporal_rs::PlainYearMonth::reference_day() const { + auto result = temporal_rs::capi::temporal_rs_PlainYearMonth_reference_day(this->AsFFI()); + return result; +} + inline const temporal_rs::Calendar& temporal_rs::PlainYearMonth::calendar() const { auto result = temporal_rs::capi::temporal_rs_PlainYearMonth_calendar(this->AsFFI()); return *temporal_rs::Calendar::FromFFI(result); diff --git a/temporal_capi/src/plain_month_day.rs b/temporal_capi/src/plain_month_day.rs index fe3878ab1..6e54d0253 100644 --- a/temporal_capi/src/plain_month_day.rs +++ b/temporal_capi/src/plain_month_day.rs @@ -87,16 +87,25 @@ pub mod ffi { pub fn day(&self) -> u8 { self.0.day() } + pub fn calendar<'a>(&'a self) -> &'a Calendar { Calendar::transparent_convert(self.0.calendar()) } + pub fn month(&self) -> u8 { + self.0.month_code().to_month_integer() + } + pub fn month_code(&self, write: &mut DiplomatWrite) { let code = self.0.month_code(); // throw away the error, this should always succeed let _ = write.write_str(code.as_str()); } + pub fn reference_year(&self) -> i32 { + self.0.reference_year() + } + pub fn to_plain_date( &self, year: Option, diff --git a/temporal_capi/src/plain_year_month.rs b/temporal_capi/src/plain_year_month.rs index 066bbd775..2507bf3ab 100644 --- a/temporal_capi/src/plain_year_month.rs +++ b/temporal_capi/src/plain_year_month.rs @@ -120,6 +120,10 @@ pub mod ffi { self.0.era_year() } + pub fn reference_day(&self) -> u8 { + self.0.reference_day() + } + pub fn calendar<'a>(&'a self) -> &'a Calendar { Calendar::transparent_convert(self.0.calendar()) }