summaryrefslogtreecommitdiffstats
path: root/intl/icu_capi/cpp/include/ICU4XCustomTimeZone.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'intl/icu_capi/cpp/include/ICU4XCustomTimeZone.hpp')
-rw-r--r--intl/icu_capi/cpp/include/ICU4XCustomTimeZone.hpp547
1 files changed, 547 insertions, 0 deletions
diff --git a/intl/icu_capi/cpp/include/ICU4XCustomTimeZone.hpp b/intl/icu_capi/cpp/include/ICU4XCustomTimeZone.hpp
new file mode 100644
index 0000000000..f3bea2d494
--- /dev/null
+++ b/intl/icu_capi/cpp/include/ICU4XCustomTimeZone.hpp
@@ -0,0 +1,547 @@
+#ifndef ICU4XCustomTimeZone_HPP
+#define ICU4XCustomTimeZone_HPP
+#include <stdint.h>
+#include <stddef.h>
+#include <stdbool.h>
+#include <algorithm>
+#include <memory>
+#include <variant>
+#include <optional>
+#include "diplomat_runtime.hpp"
+
+#include "ICU4XCustomTimeZone.h"
+
+class ICU4XCustomTimeZone;
+#include "ICU4XError.hpp"
+class ICU4XIanaToBcp47Mapper;
+class ICU4XMetazoneCalculator;
+class ICU4XIsoDateTime;
+
+/**
+ * A destruction policy for using ICU4XCustomTimeZone with std::unique_ptr.
+ */
+struct ICU4XCustomTimeZoneDeleter {
+ void operator()(capi::ICU4XCustomTimeZone* l) const noexcept {
+ capi::ICU4XCustomTimeZone_destroy(l);
+ }
+};
+
+/**
+ * See the [Rust documentation for `CustomTimeZone`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html) for more information.
+ */
+class ICU4XCustomTimeZone {
+ public:
+
+ /**
+ * Creates a time zone from an offset string.
+ *
+ * See the [Rust documentation for `from_str`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#method.from_str) for more information.
+ */
+ static diplomat::result<ICU4XCustomTimeZone, ICU4XError> create_from_string(const std::string_view s);
+
+ /**
+ * Creates a time zone with no information.
+ *
+ * See the [Rust documentation for `new_empty`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#method.new_empty) for more information.
+ */
+ static ICU4XCustomTimeZone create_empty();
+
+ /**
+ * Creates a time zone for UTC.
+ *
+ * See the [Rust documentation for `utc`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#method.utc) for more information.
+ */
+ static ICU4XCustomTimeZone create_utc();
+
+ /**
+ * Sets the `gmt_offset` field from offset seconds.
+ *
+ * Errors if the offset seconds are out of range.
+ *
+ * See the [Rust documentation for `try_from_offset_seconds`](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.try_from_offset_seconds) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html)
+ */
+ diplomat::result<std::monostate, ICU4XError> try_set_gmt_offset_seconds(int32_t offset_seconds);
+
+ /**
+ * Clears the `gmt_offset` field.
+ *
+ * See the [Rust documentation for `offset_seconds`](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.offset_seconds) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html)
+ */
+ void clear_gmt_offset();
+
+ /**
+ * Returns the value of the `gmt_offset` field as offset seconds.
+ *
+ * Errors if the `gmt_offset` field is empty.
+ *
+ * See the [Rust documentation for `offset_seconds`](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.offset_seconds) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html)
+ */
+ diplomat::result<int32_t, ICU4XError> gmt_offset_seconds() const;
+
+ /**
+ * Returns whether the `gmt_offset` field is positive.
+ *
+ * Errors if the `gmt_offset` field is empty.
+ *
+ * See the [Rust documentation for `is_positive`](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.is_positive) for more information.
+ */
+ diplomat::result<bool, ICU4XError> is_gmt_offset_positive() const;
+
+ /**
+ * Returns whether the `gmt_offset` field is zero.
+ *
+ * Errors if the `gmt_offset` field is empty (which is not the same as zero).
+ *
+ * See the [Rust documentation for `is_zero`](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.is_zero) for more information.
+ */
+ diplomat::result<bool, ICU4XError> is_gmt_offset_zero() const;
+
+ /**
+ * Returns whether the `gmt_offset` field has nonzero minutes.
+ *
+ * Errors if the `gmt_offset` field is empty.
+ *
+ * See the [Rust documentation for `has_minutes`](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.has_minutes) for more information.
+ */
+ diplomat::result<bool, ICU4XError> gmt_offset_has_minutes() const;
+
+ /**
+ * Returns whether the `gmt_offset` field has nonzero seconds.
+ *
+ * Errors if the `gmt_offset` field is empty.
+ *
+ * See the [Rust documentation for `has_seconds`](https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.has_seconds) for more information.
+ */
+ diplomat::result<bool, ICU4XError> gmt_offset_has_seconds() const;
+
+ /**
+ * Sets the `time_zone_id` field from a BCP-47 string.
+ *
+ * Errors if the string is not a valid BCP-47 time zone ID.
+ *
+ * See the [Rust documentation for `time_zone_id`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.time_zone_id) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.TimeZoneBcp47Id.html)
+ */
+ diplomat::result<std::monostate, ICU4XError> try_set_time_zone_id(const std::string_view id);
+
+ /**
+ * Sets the `time_zone_id` field from an IANA string by looking up
+ * the corresponding BCP-47 string.
+ *
+ * Errors if the string is not a valid BCP-47 time zone ID.
+ *
+ * See the [Rust documentation for `get`](https://docs.rs/icu/latest/icu/timezone/struct.IanaToBcp47MapperBorrowed.html#method.get) for more information.
+ */
+ diplomat::result<std::monostate, ICU4XError> try_set_iana_time_zone_id(const ICU4XIanaToBcp47Mapper& mapper, const std::string_view id);
+
+ /**
+ * Clears the `time_zone_id` field.
+ *
+ * See the [Rust documentation for `time_zone_id`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.time_zone_id) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.TimeZoneBcp47Id.html)
+ */
+ void clear_time_zone_id();
+
+ /**
+ * Writes the value of the `time_zone_id` field as a string.
+ *
+ * Errors if the `time_zone_id` field is empty.
+ *
+ * See the [Rust documentation for `time_zone_id`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.time_zone_id) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.TimeZoneBcp47Id.html)
+ */
+ template<typename W> diplomat::result<std::monostate, ICU4XError> time_zone_id_to_writeable(W& write) const;
+
+ /**
+ * Writes the value of the `time_zone_id` field as a string.
+ *
+ * Errors if the `time_zone_id` field is empty.
+ *
+ * See the [Rust documentation for `time_zone_id`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.time_zone_id) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.TimeZoneBcp47Id.html)
+ */
+ diplomat::result<std::string, ICU4XError> time_zone_id() const;
+
+ /**
+ * Sets the `metazone_id` field from a string.
+ *
+ * Errors if the string is not a valid BCP-47 metazone ID.
+ *
+ * See the [Rust documentation for `metazone_id`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.metazone_id) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.MetazoneId.html)
+ */
+ diplomat::result<std::monostate, ICU4XError> try_set_metazone_id(const std::string_view id);
+
+ /**
+ * Clears the `metazone_id` field.
+ *
+ * See the [Rust documentation for `metazone_id`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.metazone_id) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.MetazoneId.html)
+ */
+ void clear_metazone_id();
+
+ /**
+ * Writes the value of the `metazone_id` field as a string.
+ *
+ * Errors if the `metazone_id` field is empty.
+ *
+ * See the [Rust documentation for `metazone_id`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.metazone_id) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.MetazoneId.html)
+ */
+ template<typename W> diplomat::result<std::monostate, ICU4XError> metazone_id_to_writeable(W& write) const;
+
+ /**
+ * Writes the value of the `metazone_id` field as a string.
+ *
+ * Errors if the `metazone_id` field is empty.
+ *
+ * See the [Rust documentation for `metazone_id`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.metazone_id) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.MetazoneId.html)
+ */
+ diplomat::result<std::string, ICU4XError> metazone_id() const;
+
+ /**
+ * Sets the `zone_variant` field from a string.
+ *
+ * Errors if the string is not a valid zone variant.
+ *
+ * See the [Rust documentation for `zone_variant`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html)
+ */
+ diplomat::result<std::monostate, ICU4XError> try_set_zone_variant(const std::string_view id);
+
+ /**
+ * Clears the `zone_variant` field.
+ *
+ * See the [Rust documentation for `zone_variant`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html)
+ */
+ void clear_zone_variant();
+
+ /**
+ * Writes the value of the `zone_variant` field as a string.
+ *
+ * Errors if the `zone_variant` field is empty.
+ *
+ * See the [Rust documentation for `zone_variant`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html)
+ */
+ template<typename W> diplomat::result<std::monostate, ICU4XError> zone_variant_to_writeable(W& write) const;
+
+ /**
+ * Writes the value of the `zone_variant` field as a string.
+ *
+ * Errors if the `zone_variant` field is empty.
+ *
+ * See the [Rust documentation for `zone_variant`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html)
+ */
+ diplomat::result<std::string, ICU4XError> zone_variant() const;
+
+ /**
+ * Sets the `zone_variant` field to standard time.
+ *
+ * See the [Rust documentation for `standard`](https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html#method.standard) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant)
+ */
+ void set_standard_time();
+
+ /**
+ * Sets the `zone_variant` field to daylight time.
+ *
+ * See the [Rust documentation for `daylight`](https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html#method.daylight) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant)
+ */
+ void set_daylight_time();
+
+ /**
+ * Returns whether the `zone_variant` field is standard time.
+ *
+ * Errors if the `zone_variant` field is empty.
+ *
+ * See the [Rust documentation for `standard`](https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html#method.standard) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant)
+ */
+ diplomat::result<bool, ICU4XError> is_standard_time() const;
+
+ /**
+ * Returns whether the `zone_variant` field is daylight time.
+ *
+ * Errors if the `zone_variant` field is empty.
+ *
+ * See the [Rust documentation for `daylight`](https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html#method.daylight) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant)
+ */
+ diplomat::result<bool, ICU4XError> is_daylight_time() const;
+
+ /**
+ * Sets the metazone based on the time zone and the local timestamp.
+ *
+ * See the [Rust documentation for `maybe_calculate_metazone`](https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#method.maybe_calculate_metazone) for more information.
+ *
+ * Additional information: [1](https://docs.rs/icu/latest/icu/timezone/struct.MetazoneCalculator.html#method.compute_metazone_from_time_zone)
+ */
+ void maybe_calculate_metazone(const ICU4XMetazoneCalculator& metazone_calculator, const ICU4XIsoDateTime& local_datetime);
+ inline const capi::ICU4XCustomTimeZone* AsFFI() const { return this->inner.get(); }
+ inline capi::ICU4XCustomTimeZone* AsFFIMut() { return this->inner.get(); }
+ inline ICU4XCustomTimeZone(capi::ICU4XCustomTimeZone* i) : inner(i) {}
+ ICU4XCustomTimeZone() = default;
+ ICU4XCustomTimeZone(ICU4XCustomTimeZone&&) noexcept = default;
+ ICU4XCustomTimeZone& operator=(ICU4XCustomTimeZone&& other) noexcept = default;
+ private:
+ std::unique_ptr<capi::ICU4XCustomTimeZone, ICU4XCustomTimeZoneDeleter> inner;
+};
+
+#include "ICU4XIanaToBcp47Mapper.hpp"
+#include "ICU4XMetazoneCalculator.hpp"
+#include "ICU4XIsoDateTime.hpp"
+
+inline diplomat::result<ICU4XCustomTimeZone, ICU4XError> ICU4XCustomTimeZone::create_from_string(const std::string_view s) {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_create_from_string(s.data(), s.size());
+ diplomat::result<ICU4XCustomTimeZone, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok<ICU4XCustomTimeZone>(ICU4XCustomTimeZone(diplomat_result_raw_out_value.ok));
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline ICU4XCustomTimeZone ICU4XCustomTimeZone::create_empty() {
+ return ICU4XCustomTimeZone(capi::ICU4XCustomTimeZone_create_empty());
+}
+inline ICU4XCustomTimeZone ICU4XCustomTimeZone::create_utc() {
+ return ICU4XCustomTimeZone(capi::ICU4XCustomTimeZone_create_utc());
+}
+inline diplomat::result<std::monostate, ICU4XError> ICU4XCustomTimeZone::try_set_gmt_offset_seconds(int32_t offset_seconds) {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_gmt_offset_seconds(this->inner.get(), offset_seconds);
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline void ICU4XCustomTimeZone::clear_gmt_offset() {
+ capi::ICU4XCustomTimeZone_clear_gmt_offset(this->inner.get());
+}
+inline diplomat::result<int32_t, ICU4XError> ICU4XCustomTimeZone::gmt_offset_seconds() const {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_gmt_offset_seconds(this->inner.get());
+ diplomat::result<int32_t, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok<int32_t>(diplomat_result_raw_out_value.ok);
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<bool, ICU4XError> ICU4XCustomTimeZone::is_gmt_offset_positive() const {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_is_gmt_offset_positive(this->inner.get());
+ diplomat::result<bool, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<bool, ICU4XError> ICU4XCustomTimeZone::is_gmt_offset_zero() const {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_is_gmt_offset_zero(this->inner.get());
+ diplomat::result<bool, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<bool, ICU4XError> ICU4XCustomTimeZone::gmt_offset_has_minutes() const {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_gmt_offset_has_minutes(this->inner.get());
+ diplomat::result<bool, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<bool, ICU4XError> ICU4XCustomTimeZone::gmt_offset_has_seconds() const {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_gmt_offset_has_seconds(this->inner.get());
+ diplomat::result<bool, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<std::monostate, ICU4XError> ICU4XCustomTimeZone::try_set_time_zone_id(const std::string_view id) {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_time_zone_id(this->inner.get(), id.data(), id.size());
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<std::monostate, ICU4XError> ICU4XCustomTimeZone::try_set_iana_time_zone_id(const ICU4XIanaToBcp47Mapper& mapper, const std::string_view id) {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_iana_time_zone_id(this->inner.get(), mapper.AsFFI(), id.data(), id.size());
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline void ICU4XCustomTimeZone::clear_time_zone_id() {
+ capi::ICU4XCustomTimeZone_clear_time_zone_id(this->inner.get());
+}
+template<typename W> inline diplomat::result<std::monostate, ICU4XError> ICU4XCustomTimeZone::time_zone_id_to_writeable(W& write) const {
+ capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_time_zone_id(this->inner.get(), &write_writer);
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<std::string, ICU4XError> ICU4XCustomTimeZone::time_zone_id() const {
+ std::string diplomat_writeable_string;
+ capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_time_zone_id(this->inner.get(), &diplomat_writeable_out);
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
+}
+inline diplomat::result<std::monostate, ICU4XError> ICU4XCustomTimeZone::try_set_metazone_id(const std::string_view id) {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_metazone_id(this->inner.get(), id.data(), id.size());
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline void ICU4XCustomTimeZone::clear_metazone_id() {
+ capi::ICU4XCustomTimeZone_clear_metazone_id(this->inner.get());
+}
+template<typename W> inline diplomat::result<std::monostate, ICU4XError> ICU4XCustomTimeZone::metazone_id_to_writeable(W& write) const {
+ capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_metazone_id(this->inner.get(), &write_writer);
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<std::string, ICU4XError> ICU4XCustomTimeZone::metazone_id() const {
+ std::string diplomat_writeable_string;
+ capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_metazone_id(this->inner.get(), &diplomat_writeable_out);
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
+}
+inline diplomat::result<std::monostate, ICU4XError> ICU4XCustomTimeZone::try_set_zone_variant(const std::string_view id) {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_zone_variant(this->inner.get(), id.data(), id.size());
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline void ICU4XCustomTimeZone::clear_zone_variant() {
+ capi::ICU4XCustomTimeZone_clear_zone_variant(this->inner.get());
+}
+template<typename W> inline diplomat::result<std::monostate, ICU4XError> ICU4XCustomTimeZone::zone_variant_to_writeable(W& write) const {
+ capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_zone_variant(this->inner.get(), &write_writer);
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<std::string, ICU4XError> ICU4XCustomTimeZone::zone_variant() const {
+ std::string diplomat_writeable_string;
+ capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_zone_variant(this->inner.get(), &diplomat_writeable_out);
+ diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok(std::monostate());
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
+}
+inline void ICU4XCustomTimeZone::set_standard_time() {
+ capi::ICU4XCustomTimeZone_set_standard_time(this->inner.get());
+}
+inline void ICU4XCustomTimeZone::set_daylight_time() {
+ capi::ICU4XCustomTimeZone_set_daylight_time(this->inner.get());
+}
+inline diplomat::result<bool, ICU4XError> ICU4XCustomTimeZone::is_standard_time() const {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_is_standard_time(this->inner.get());
+ diplomat::result<bool, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline diplomat::result<bool, ICU4XError> ICU4XCustomTimeZone::is_daylight_time() const {
+ auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_is_daylight_time(this->inner.get());
+ diplomat::result<bool, ICU4XError> diplomat_result_out_value;
+ if (diplomat_result_raw_out_value.is_ok) {
+ diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
+ } else {
+ diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
+ }
+ return diplomat_result_out_value;
+}
+inline void ICU4XCustomTimeZone::maybe_calculate_metazone(const ICU4XMetazoneCalculator& metazone_calculator, const ICU4XIsoDateTime& local_datetime) {
+ capi::ICU4XCustomTimeZone_maybe_calculate_metazone(this->inner.get(), metazone_calculator.AsFFI(), local_datetime.AsFFI());
+}
+#endif