ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
ICU4XCustomTimeZone.hpp
Go to the documentation of this file.
1#ifndef ICU4XCustomTimeZone_HPP
2#define ICU4XCustomTimeZone_HPP
3#include <stdint.h>
4#include <stddef.h>
5#include <stdbool.h>
6#include <algorithm>
7#include <memory>
8#include <variant>
9#include <optional>
10#include "diplomat_runtime.hpp"
11
12#include "ICU4XCustomTimeZone.h"
13
15#include "ICU4XError.hpp"
20
24struct ICU4XCustomTimeZoneDeleter {
25 void operator()(capi::ICU4XCustomTimeZone* l) const noexcept {
26 capi::ICU4XCustomTimeZone_destroy(l);
27 }
28};
29
34 public:
35
42
49
56
67
75 void clear_gmt_offset();
76
87
96
105
114
123
134
144
152
160 void clear_time_zone_id();
161
172
183
194
202 void clear_metazone_id();
203
214
225
236
244 void clear_zone_variant();
245
256
267
276 void set_standard_time();
277
286 void set_daylight_time();
287
298
309
317 void maybe_calculate_metazone(const ICU4XMetazoneCalculator& metazone_calculator, const ICU4XIsoDateTime& local_datetime);
318 inline const capi::ICU4XCustomTimeZone* AsFFI() const { return this->inner.get(); }
319 inline capi::ICU4XCustomTimeZone* AsFFIMut() { return this->inner.get(); }
320 inline explicit ICU4XCustomTimeZone(capi::ICU4XCustomTimeZone* i) : inner(i) {}
323 ICU4XCustomTimeZone& operator=(ICU4XCustomTimeZone&& other) noexcept = default;
324 private:
325 std::unique_ptr<capi::ICU4XCustomTimeZone, ICU4XCustomTimeZoneDeleter> inner;
326};
327
328#include "ICU4XIanaToBcp47Mapper.hpp"
331#include "ICU4XIsoDateTime.hpp"
332
334 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_create_from_string(s.data(), s.size());
336 if (diplomat_result_raw_out_value.is_ok) {
337 diplomat_result_out_value = diplomat::Ok<ICU4XCustomTimeZone>(ICU4XCustomTimeZone(diplomat_result_raw_out_value.ok));
338 } else {
339 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
340 }
341 return diplomat_result_out_value;
342}
344 return ICU4XCustomTimeZone(capi::ICU4XCustomTimeZone_create_empty());
345}
347 return ICU4XCustomTimeZone(capi::ICU4XCustomTimeZone_create_utc());
348}
350 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_gmt_offset_seconds(this->inner.get(), offset_seconds);
351 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
352 if (diplomat_result_raw_out_value.is_ok) {
353 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
354 } else {
355 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
356 }
357 return diplomat_result_out_value;
358}
360 capi::ICU4XCustomTimeZone_clear_gmt_offset(this->inner.get());
361}
363 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_gmt_offset_seconds(this->inner.get());
364 diplomat::result<int32_t, ICU4XError> diplomat_result_out_value;
365 if (diplomat_result_raw_out_value.is_ok) {
366 diplomat_result_out_value = diplomat::Ok<int32_t>(diplomat_result_raw_out_value.ok);
367 } else {
368 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
369 }
370 return diplomat_result_out_value;
371}
373 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_is_gmt_offset_positive(this->inner.get());
374 diplomat::result<bool, ICU4XError> diplomat_result_out_value;
375 if (diplomat_result_raw_out_value.is_ok) {
376 diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
377 } else {
378 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
379 }
380 return diplomat_result_out_value;
381}
383 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_is_gmt_offset_zero(this->inner.get());
384 diplomat::result<bool, ICU4XError> diplomat_result_out_value;
385 if (diplomat_result_raw_out_value.is_ok) {
386 diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
387 } else {
388 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
389 }
390 return diplomat_result_out_value;
391}
393 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_gmt_offset_has_minutes(this->inner.get());
394 diplomat::result<bool, ICU4XError> diplomat_result_out_value;
395 if (diplomat_result_raw_out_value.is_ok) {
396 diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
397 } else {
398 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
399 }
400 return diplomat_result_out_value;
401}
403 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_gmt_offset_has_seconds(this->inner.get());
404 diplomat::result<bool, ICU4XError> diplomat_result_out_value;
405 if (diplomat_result_raw_out_value.is_ok) {
406 diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
407 } else {
408 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
409 }
410 return diplomat_result_out_value;
411}
413 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_time_zone_id(this->inner.get(), id.data(), id.size());
414 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
415 if (diplomat_result_raw_out_value.is_ok) {
416 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
417 } else {
418 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
419 }
420 return diplomat_result_out_value;
421}
423 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_iana_time_zone_id(this->inner.get(), mapper.AsFFI(), id.data(), id.size());
424 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
425 if (diplomat_result_raw_out_value.is_ok) {
426 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
427 } else {
428 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
429 }
430 return diplomat_result_out_value;
431}
433 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_iana_time_zone_id_2(this->inner.get(), mapper.AsFFI(), id.data(), id.size());
434 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
435 if (diplomat_result_raw_out_value.is_ok) {
436 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
437 } else {
438 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
439 }
440 return diplomat_result_out_value;
441}
443 capi::ICU4XCustomTimeZone_clear_time_zone_id(this->inner.get());
444}
446 capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
447 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_time_zone_id(this->inner.get(), &write_writer);
448 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
449 if (diplomat_result_raw_out_value.is_ok) {
450 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
451 } else {
452 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
453 }
454 return diplomat_result_out_value;
455}
457 std::string diplomat_writeable_string;
458 capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
459 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_time_zone_id(this->inner.get(), &diplomat_writeable_out);
460 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
461 if (diplomat_result_raw_out_value.is_ok) {
462 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
463 } else {
464 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
465 }
466 return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
467}
469 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_metazone_id(this->inner.get(), id.data(), id.size());
470 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
471 if (diplomat_result_raw_out_value.is_ok) {
472 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
473 } else {
474 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
475 }
476 return diplomat_result_out_value;
477}
479 capi::ICU4XCustomTimeZone_clear_metazone_id(this->inner.get());
480}
482 capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
483 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_metazone_id(this->inner.get(), &write_writer);
484 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
485 if (diplomat_result_raw_out_value.is_ok) {
486 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
487 } else {
488 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
489 }
490 return diplomat_result_out_value;
491}
493 std::string diplomat_writeable_string;
494 capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
495 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_metazone_id(this->inner.get(), &diplomat_writeable_out);
496 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
497 if (diplomat_result_raw_out_value.is_ok) {
498 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
499 } else {
500 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
501 }
502 return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
503}
505 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_try_set_zone_variant(this->inner.get(), id.data(), id.size());
506 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
507 if (diplomat_result_raw_out_value.is_ok) {
508 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
509 } else {
510 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
511 }
512 return diplomat_result_out_value;
513}
515 capi::ICU4XCustomTimeZone_clear_zone_variant(this->inner.get());
516}
518 capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
519 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_zone_variant(this->inner.get(), &write_writer);
520 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
521 if (diplomat_result_raw_out_value.is_ok) {
522 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
523 } else {
524 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
525 }
526 return diplomat_result_out_value;
527}
529 std::string diplomat_writeable_string;
530 capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
531 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_zone_variant(this->inner.get(), &diplomat_writeable_out);
532 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
533 if (diplomat_result_raw_out_value.is_ok) {
534 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
535 } else {
536 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
537 }
538 return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
539}
541 capi::ICU4XCustomTimeZone_set_standard_time(this->inner.get());
542}
544 capi::ICU4XCustomTimeZone_set_daylight_time(this->inner.get());
545}
547 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_is_standard_time(this->inner.get());
548 diplomat::result<bool, ICU4XError> diplomat_result_out_value;
549 if (diplomat_result_raw_out_value.is_ok) {
550 diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
551 } else {
552 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
553 }
554 return diplomat_result_out_value;
555}
557 auto diplomat_result_raw_out_value = capi::ICU4XCustomTimeZone_is_daylight_time(this->inner.get());
558 diplomat::result<bool, ICU4XError> diplomat_result_out_value;
559 if (diplomat_result_raw_out_value.is_ok) {
560 diplomat_result_out_value = diplomat::Ok<bool>(diplomat_result_raw_out_value.ok);
561 } else {
562 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
563 }
564 return diplomat_result_out_value;
565}
566inline void ICU4XCustomTimeZone::maybe_calculate_metazone(const ICU4XMetazoneCalculator& metazone_calculator, const ICU4XIsoDateTime& local_datetime) {
567 capi::ICU4XCustomTimeZone_maybe_calculate_metazone(this->inner.get(), metazone_calculator.AsFFI(), local_datetime.AsFFI());
568}
569#endif
ICU4XError
Definition ICU4XError.hpp:23
Definition ICU4XCustomTimeZone.hpp:33
diplomat::result< bool, ICU4XError > is_gmt_offset_positive() const
Definition ICU4XCustomTimeZone.hpp:372
diplomat::result< bool, ICU4XError > gmt_offset_has_seconds() const
Definition ICU4XCustomTimeZone.hpp:402
void clear_gmt_offset()
Definition ICU4XCustomTimeZone.hpp:359
void maybe_calculate_metazone(const ICU4XMetazoneCalculator &metazone_calculator, const ICU4XIsoDateTime &local_datetime)
Definition ICU4XCustomTimeZone.hpp:566
diplomat::result< std::monostate, ICU4XError > try_set_gmt_offset_seconds(int32_t offset_seconds)
Definition ICU4XCustomTimeZone.hpp:349
static ICU4XCustomTimeZone create_utc()
Definition ICU4XCustomTimeZone.hpp:346
diplomat::result< bool, ICU4XError > gmt_offset_has_minutes() const
Definition ICU4XCustomTimeZone.hpp:392
diplomat::result< bool, ICU4XError > is_standard_time() const
Definition ICU4XCustomTimeZone.hpp:546
void clear_metazone_id()
Definition ICU4XCustomTimeZone.hpp:478
ICU4XCustomTimeZone()=default
diplomat::result< bool, ICU4XError > is_gmt_offset_zero() const
Definition ICU4XCustomTimeZone.hpp:382
diplomat::result< std::monostate, ICU4XError > time_zone_id_to_writeable(W &write) const
Definition ICU4XCustomTimeZone.hpp:445
void clear_time_zone_id()
Definition ICU4XCustomTimeZone.hpp:442
diplomat::result< std::monostate, ICU4XError > try_set_iana_time_zone_id(const ICU4XIanaToBcp47Mapper &mapper, const std::string_view id)
Definition ICU4XCustomTimeZone.hpp:422
static ICU4XCustomTimeZone create_empty()
Definition ICU4XCustomTimeZone.hpp:343
diplomat::result< std::string, ICU4XError > zone_variant() const
Definition ICU4XCustomTimeZone.hpp:528
ICU4XCustomTimeZone(ICU4XCustomTimeZone &&) noexcept=default
diplomat::result< std::monostate, ICU4XError > try_set_iana_time_zone_id_2(const ICU4XTimeZoneIdMapper &mapper, const std::string_view id)
Definition ICU4XCustomTimeZone.hpp:432
diplomat::result< bool, ICU4XError > is_daylight_time() const
Definition ICU4XCustomTimeZone.hpp:556
void clear_zone_variant()
Definition ICU4XCustomTimeZone.hpp:514
static diplomat::result< ICU4XCustomTimeZone, ICU4XError > create_from_string(const std::string_view s)
Definition ICU4XCustomTimeZone.hpp:333
diplomat::result< std::monostate, ICU4XError > try_set_time_zone_id(const std::string_view id)
Definition ICU4XCustomTimeZone.hpp:412
diplomat::result< int32_t, ICU4XError > gmt_offset_seconds() const
Definition ICU4XCustomTimeZone.hpp:362
diplomat::result< std::monostate, ICU4XError > try_set_zone_variant(const std::string_view id)
Definition ICU4XCustomTimeZone.hpp:504
void set_standard_time()
Definition ICU4XCustomTimeZone.hpp:540
diplomat::result< std::monostate, ICU4XError > metazone_id_to_writeable(W &write) const
Definition ICU4XCustomTimeZone.hpp:481
diplomat::result< std::string, ICU4XError > metazone_id() const
Definition ICU4XCustomTimeZone.hpp:492
diplomat::result< std::monostate, ICU4XError > zone_variant_to_writeable(W &write) const
Definition ICU4XCustomTimeZone.hpp:517
ICU4XCustomTimeZone(capi::ICU4XCustomTimeZone *i)
Definition ICU4XCustomTimeZone.hpp:320
diplomat::result< std::string, ICU4XError > time_zone_id() const
Definition ICU4XCustomTimeZone.hpp:456
void set_daylight_time()
Definition ICU4XCustomTimeZone.hpp:543
diplomat::result< std::monostate, ICU4XError > try_set_metazone_id(const std::string_view id)
Definition ICU4XCustomTimeZone.hpp:468
Definition ICU4XIanaToBcp47Mapper.hpp:36
Definition ICU4XIsoDateTime.hpp:38
Definition ICU4XMetazoneCalculator.hpp:36
Definition ICU4XTimeZoneIdMapper.hpp:35
Definition diplomat_runtime.hpp:84
result< T2, E > replace_ok(T2 &&t)
Definition diplomat_runtime.hpp:125
capi::DiplomatWriteable WriteableFromString(std::string &string)
Definition diplomat_runtime.hpp:31
Definition diplomat_runtime.hpp:69
Definition diplomat_runtime.hpp:55