Realm C++ SDK 버전 v2.2.0

timestamp.hpp

1
2//
3//저작권 2024 Realm Inc.
4//
5// Apache 라이선스, 버전 2.0("라이선스")에 따라 라이선스가 부여됩니다.
6// 라이선스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다.
7// 다음에서 라이선스 사본을 얻을 수 있습니다.
8//
9// http://www.apache.org/licences/LICENSE-2.0
10//
11// 관련 법률에서 요구하거나 문서로 동의하지 않는 한, 소프트웨어
12// 라이선스에 따라 배포되는 것은 '있는 그대로' 배포됩니다,
13// Express 묵시적이든 어떤 종류의 보증이나 조건도 제공하지 않습니다.
14// 권한을 관리하는 특정 언어에 대한 내용은 라이선스를 참조하세요.
15// 라이선스에 따른 제한 사항.
16//
18
19#ifndef CPPRALM_BRIDGE_TIMESTAMP_HPP
20#define CPPREALM_BRIDGE_TIMESTAMP_HPP
21
22#include <chrono>
23#include <cpprealm/internal/bridge/utils.hpp>
24
25네임스페이스 영역 {
26 클래스 타임스탬프;
27}
28
29namespace realm::internal::bridge {
30 구조체 타임스탬프 {
31 timestamp() = 기본값;
32 timestamp(const timestamp& other) = 기본값;
33 timestamp& operator=(const timestamp& other) = 기본값;
34 timestamp(timestamp&& other) = 기본값;
35 타임스탬프& 연산자=(타임스탬프&& 기타) = 기본값;
36 ~timestamp() = 기본값;
37 timestamp(const Timestamp&); //NOLINT(google-explicit-constructor)
38 연산자 Timestamp() const; //NOLINT(google-explicit-constructor)
39 연산자 std::chrono::time_point<std::chrono::system_clock>() const; //NOLINT(google-explicit-constructor)
40 timestamp(int64_t초, int32_t나노초);
41 timestamp(const std::chrono::time_point<std::chrono::system_clock>& tp); //NOLINT(google-explicit-constructor)
42 [[nodiscard]] int64_t get_seconds() const noException;
43 [[nodiscard]] int32_t get_nanoseconds() const noException;
44 [[nodiscard]] std::chrono::time_point<std::chrono::system_clock, std::chrono::system_clock::duration>
45 get_time_point() const {
46 int64_t native_nano = get_seconds() * nanoseconds_per_second + get_nanoseconds();
47 auto duration = std::chrono::duration_cast<std::chrono::system_clock::duration>(std::chrono::duration<int64_t, std::nano>{native_nano});
48 return std::chrono::time_point<std::chrono::system_clock,
49 std::chrono::system_clock::duration>(duration);
50 }
51 private:
52 static constexpr int32_t nanoseconds_per_second = 1000000000;
53 int64_t m_seconds = 0;
54 int32_t m_nanoseconds = 0;
55 친구 bool 연산자 ==(const 타임스탬프&, const 타임스탬프&);
56 친구 bool 연산자 !=(const 타임스탬프&, const 타임스탬프&);
57 친구 bool 연산자 >(const timestamp&, const timestamp&);
58 친구 bool 연산자 <(const timestamp&, const timestamp&);
59 친구 bool 연산자 >=(const timestamp&, const timestamp&);
60 친구 bool 연산자 <=(const timestamp&, const timestamp&);
61 };
62
63 bool 연산자 ==(const 타임스탬프&, const 타임스탬프&);
64 bool 연산자 !=(const 타임스탬프&, const 타임스탬프&);
65 bool 연산자 >(const timestamp&, const timestamp&);
66 bool 연산자 <(const timestamp&, const timestamp&);
67 bool 연산자 >=(const timestamp&, const timestamp&);
68 bool 연산자 <=(const timestamp&, const timestamp&);
69}
70
71#endif //CPPREALM_BRIDGE_TIMESTAMP_HPP
정의: timestamp.hpp:30