1b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Generated by the protocol buffer compiler.  DO NOT EDIT!
2b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// source: google/protobuf/timestamp.proto
3b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
4b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#import "GPBProtocolBuffers.h"
5b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
6b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30001
7b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#error This file was generated by a different version of protoc which is incompatible with your Protocol Buffer library sources.
8b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#endif
9b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
10b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// @@protoc_insertion_point(imports)
11b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
12b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma clang diagnostic push
13b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma clang diagnostic ignored "-Wdeprecated-declarations"
14b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
15b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerCF_EXTERN_C_BEGIN
16b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
17b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerNS_ASSUME_NONNULL_BEGIN
18b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
19b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - GPBTimestampRoot
20b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
21b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Exposes the extension registry for this file.
22b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
23b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// The base class provides:
24b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// @code
25b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///   + (GPBExtensionRegistry *)extensionRegistry;
26b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// @endcode
27b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// which is a @c GPBExtensionRegistry that includes all the extensions defined by
28b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// this file and all files that it depends on.
29b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBTimestampRoot : GPBRootObject
30b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
31b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
32b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - GPBTimestamp
33b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
34b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammertypedef GPB_ENUM(GPBTimestamp_FieldNumber) {
35b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  GPBTimestamp_FieldNumber_Seconds = 1,
36b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer  GPBTimestamp_FieldNumber_Nanos = 2,
37b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer};
38b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
39b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// A Timestamp represents a point in time independent of any time zone
40b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// or calendar, represented as seconds and fractions of seconds at
41b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// nanosecond resolution in UTC Epoch time. It is encoded using the
42b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Proleptic Gregorian Calendar which extends the Gregorian calendar
43b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// backwards to year one. It is encoded assuming all minutes are 60
44b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// seconds long, i.e. leap seconds are "smeared" so that no leap second
45b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// table is needed for interpretation. Range is from
46b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.
47b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// By restricting to that range, we ensure that we can convert to
48b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// and from  RFC 3339 date strings.
49b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
50b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
51b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Example 1: Compute Timestamp from POSIX `time()`.
52b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
53b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     Timestamp timestamp;
54b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     timestamp.set_seconds(time(NULL));
55b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     timestamp.set_nanos(0);
56b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
57b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
58b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
59b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     struct timeval tv;
60b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     gettimeofday(&tv, NULL);
61b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
62b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     Timestamp timestamp;
63b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     timestamp.set_seconds(tv.tv_sec);
64b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     timestamp.set_nanos(tv.tv_usec * 1000);
65b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
66b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
67b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
68b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     FILETIME ft;
69b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     GetSystemTimeAsFileTime(&ft);
70b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
71b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
72b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
73b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
74b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     Timestamp timestamp;
75b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
76b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
77b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
78b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
79b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
80b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     long millis = System.currentTimeMillis();
81b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
82b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
83b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///         .setNanos((int) ((millis % 1000) * 1000000)).build();
84b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
85b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
86b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Example 5: Compute Timestamp from current time in Python.
87b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///
88b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     now = time.time()
89b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     seconds = int(now)
90b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     nanos = int((now - seconds) * 10**9)
91b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer///     timestamp = Timestamp(seconds=seconds, nanos=nanos)
92b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBTimestamp : GPBMessage
93b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
94b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Represents seconds of UTC time since Unix epoch
95b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to
96b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// 9999-12-31T23:59:59Z inclusive.
97b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readwrite) int64_t seconds;
98b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
99b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// Non-negative fractions of a second at nanosecond resolution. Negative
100b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// second values with fractions must still have non-negative nanos values
101b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// that count forward in time. Must be from 0 to 999,999,999
102b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer/// inclusive.
103b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readwrite) int32_t nanos;
104b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
105b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
106b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
107b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerNS_ASSUME_NONNULL_END
108b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
109b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerCF_EXTERN_C_END
110b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
111b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma clang diagnostic pop
112b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
113b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// @@protoc_insertion_point(global_scope)
114