ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
ICU4XTime.hpp
Go to the documentation of this file.
1#ifndef ICU4XTime_HPP
2#define ICU4XTime_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 "ICU4XTime.h"
13
14class ICU4XTime;
15#include "ICU4XError.hpp"
16
20struct ICU4XTimeDeleter {
21 void operator()(capi::ICU4XTime* l) const noexcept {
22 capi::ICU4XTime_destroy(l);
23 }
24};
25
31class ICU4XTime {
32 public:
33
39 static diplomat::result<ICU4XTime, ICU4XError> create(uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond);
40
47
53 uint8_t hour() const;
54
60 uint8_t minute() const;
61
67 uint8_t second() const;
68
74 uint32_t nanosecond() const;
75 inline const capi::ICU4XTime* AsFFI() const { return this->inner.get(); }
76 inline capi::ICU4XTime* AsFFIMut() { return this->inner.get(); }
77 inline explicit ICU4XTime(capi::ICU4XTime* i) : inner(i) {}
78 ICU4XTime() = default;
79 ICU4XTime(ICU4XTime&&) noexcept = default;
80 ICU4XTime& operator=(ICU4XTime&& other) noexcept = default;
81 private:
82 std::unique_ptr<capi::ICU4XTime, ICU4XTimeDeleter> inner;
83};
84
85
86inline diplomat::result<ICU4XTime, ICU4XError> ICU4XTime::create(uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond) {
87 auto diplomat_result_raw_out_value = capi::ICU4XTime_create(hour, minute, second, nanosecond);
88 diplomat::result<ICU4XTime, ICU4XError> diplomat_result_out_value;
89 if (diplomat_result_raw_out_value.is_ok) {
90 diplomat_result_out_value = diplomat::Ok<ICU4XTime>(ICU4XTime(diplomat_result_raw_out_value.ok));
91 } else {
92 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
93 }
94 return diplomat_result_out_value;
95}
97 auto diplomat_result_raw_out_value = capi::ICU4XTime_create_midnight();
98 diplomat::result<ICU4XTime, ICU4XError> diplomat_result_out_value;
99 if (diplomat_result_raw_out_value.is_ok) {
100 diplomat_result_out_value = diplomat::Ok<ICU4XTime>(ICU4XTime(diplomat_result_raw_out_value.ok));
101 } else {
102 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
103 }
104 return diplomat_result_out_value;
105}
106inline uint8_t ICU4XTime::hour() const {
107 return capi::ICU4XTime_hour(this->inner.get());
108}
109inline uint8_t ICU4XTime::minute() const {
110 return capi::ICU4XTime_minute(this->inner.get());
111}
112inline uint8_t ICU4XTime::second() const {
113 return capi::ICU4XTime_second(this->inner.get());
114}
115inline uint32_t ICU4XTime::nanosecond() const {
116 return capi::ICU4XTime_nanosecond(this->inner.get());
117}
118#endif
ICU4XError
Definition ICU4XError.hpp:23
Definition ICU4XTime.hpp:31
static diplomat::result< ICU4XTime, ICU4XError > create_midnight()
Definition ICU4XTime.hpp:96
uint8_t hour() const
Definition ICU4XTime.hpp:106
ICU4XTime(capi::ICU4XTime *i)
Definition ICU4XTime.hpp:77
uint8_t second() const
Definition ICU4XTime.hpp:112
ICU4XTime()=default
static diplomat::result< ICU4XTime, ICU4XError > create(uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond)
Definition ICU4XTime.hpp:86
ICU4XTime(ICU4XTime &&) noexcept=default
uint32_t nanosecond() const
Definition ICU4XTime.hpp:115
uint8_t minute() const
Definition ICU4XTime.hpp:109
Definition diplomat_runtime.hpp:84
Definition diplomat_runtime.hpp:16
Definition diplomat_runtime.hpp:69
Definition diplomat_runtime.hpp:55