1*6777b538SAndroid Build Coastguard Worker // Generated by the protocol buffer compiler. DO NOT EDIT! 2*6777b538SAndroid Build Coastguard Worker // source: google/protobuf/duration.proto 3*6777b538SAndroid Build Coastguard Worker 4*6777b538SAndroid Build Coastguard Worker #import "GPBDescriptor.h" 5*6777b538SAndroid Build Coastguard Worker #import "GPBMessage.h" 6*6777b538SAndroid Build Coastguard Worker #import "GPBRootObject.h" 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 9*6777b538SAndroid Build Coastguard Worker #error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. 10*6777b538SAndroid Build Coastguard Worker #endif 11*6777b538SAndroid Build Coastguard Worker #if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION 12*6777b538SAndroid Build Coastguard Worker #error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. 13*6777b538SAndroid Build Coastguard Worker #endif 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker // @@protoc_insertion_point(imports) 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Worker #pragma clang diagnostic push 18*6777b538SAndroid Build Coastguard Worker #pragma clang diagnostic ignored "-Wdeprecated-declarations" 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker CF_EXTERN_C_BEGIN 21*6777b538SAndroid Build Coastguard Worker 22*6777b538SAndroid Build Coastguard Worker NS_ASSUME_NONNULL_BEGIN 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Worker #pragma mark - GPBDurationRoot 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker /** 27*6777b538SAndroid Build Coastguard Worker * Exposes the extension registry for this file. 28*6777b538SAndroid Build Coastguard Worker * 29*6777b538SAndroid Build Coastguard Worker * The base class provides: 30*6777b538SAndroid Build Coastguard Worker * @code 31*6777b538SAndroid Build Coastguard Worker * + (GPBExtensionRegistry *)extensionRegistry; 32*6777b538SAndroid Build Coastguard Worker * @endcode 33*6777b538SAndroid Build Coastguard Worker * which is a @c GPBExtensionRegistry that includes all the extensions defined by 34*6777b538SAndroid Build Coastguard Worker * this file and all files that it depends on. 35*6777b538SAndroid Build Coastguard Worker **/ 36*6777b538SAndroid Build Coastguard Worker GPB_FINAL @interface GPBDurationRoot : GPBRootObject 37*6777b538SAndroid Build Coastguard Worker @end 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Worker #pragma mark - GPBDuration 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker typedef GPB_ENUM(GPBDuration_FieldNumber) { 42*6777b538SAndroid Build Coastguard Worker GPBDuration_FieldNumber_Seconds = 1, 43*6777b538SAndroid Build Coastguard Worker GPBDuration_FieldNumber_Nanos = 2, 44*6777b538SAndroid Build Coastguard Worker }; 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker /** 47*6777b538SAndroid Build Coastguard Worker * A Duration represents a signed, fixed-length span of time represented 48*6777b538SAndroid Build Coastguard Worker * as a count of seconds and fractions of seconds at nanosecond 49*6777b538SAndroid Build Coastguard Worker * resolution. It is independent of any calendar and concepts like "day" 50*6777b538SAndroid Build Coastguard Worker * or "month". It is related to Timestamp in that the difference between 51*6777b538SAndroid Build Coastguard Worker * two Timestamp values is a Duration and it can be added or subtracted 52*6777b538SAndroid Build Coastguard Worker * from a Timestamp. Range is approximately +-10,000 years. 53*6777b538SAndroid Build Coastguard Worker * 54*6777b538SAndroid Build Coastguard Worker * # Examples 55*6777b538SAndroid Build Coastguard Worker * 56*6777b538SAndroid Build Coastguard Worker * Example 1: Compute Duration from two Timestamps in pseudo code. 57*6777b538SAndroid Build Coastguard Worker * 58*6777b538SAndroid Build Coastguard Worker * Timestamp start = ...; 59*6777b538SAndroid Build Coastguard Worker * Timestamp end = ...; 60*6777b538SAndroid Build Coastguard Worker * Duration duration = ...; 61*6777b538SAndroid Build Coastguard Worker * 62*6777b538SAndroid Build Coastguard Worker * duration.seconds = end.seconds - start.seconds; 63*6777b538SAndroid Build Coastguard Worker * duration.nanos = end.nanos - start.nanos; 64*6777b538SAndroid Build Coastguard Worker * 65*6777b538SAndroid Build Coastguard Worker * if (duration.seconds < 0 && duration.nanos > 0) { 66*6777b538SAndroid Build Coastguard Worker * duration.seconds += 1; 67*6777b538SAndroid Build Coastguard Worker * duration.nanos -= 1000000000; 68*6777b538SAndroid Build Coastguard Worker * } else if (duration.seconds > 0 && duration.nanos < 0) { 69*6777b538SAndroid Build Coastguard Worker * duration.seconds -= 1; 70*6777b538SAndroid Build Coastguard Worker * duration.nanos += 1000000000; 71*6777b538SAndroid Build Coastguard Worker * } 72*6777b538SAndroid Build Coastguard Worker * 73*6777b538SAndroid Build Coastguard Worker * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. 74*6777b538SAndroid Build Coastguard Worker * 75*6777b538SAndroid Build Coastguard Worker * Timestamp start = ...; 76*6777b538SAndroid Build Coastguard Worker * Duration duration = ...; 77*6777b538SAndroid Build Coastguard Worker * Timestamp end = ...; 78*6777b538SAndroid Build Coastguard Worker * 79*6777b538SAndroid Build Coastguard Worker * end.seconds = start.seconds + duration.seconds; 80*6777b538SAndroid Build Coastguard Worker * end.nanos = start.nanos + duration.nanos; 81*6777b538SAndroid Build Coastguard Worker * 82*6777b538SAndroid Build Coastguard Worker * if (end.nanos < 0) { 83*6777b538SAndroid Build Coastguard Worker * end.seconds -= 1; 84*6777b538SAndroid Build Coastguard Worker * end.nanos += 1000000000; 85*6777b538SAndroid Build Coastguard Worker * } else if (end.nanos >= 1000000000) { 86*6777b538SAndroid Build Coastguard Worker * end.seconds += 1; 87*6777b538SAndroid Build Coastguard Worker * end.nanos -= 1000000000; 88*6777b538SAndroid Build Coastguard Worker * } 89*6777b538SAndroid Build Coastguard Worker * 90*6777b538SAndroid Build Coastguard Worker * Example 3: Compute Duration from datetime.timedelta in Python. 91*6777b538SAndroid Build Coastguard Worker * 92*6777b538SAndroid Build Coastguard Worker * td = datetime.timedelta(days=3, minutes=10) 93*6777b538SAndroid Build Coastguard Worker * duration = Duration() 94*6777b538SAndroid Build Coastguard Worker * duration.FromTimedelta(td) 95*6777b538SAndroid Build Coastguard Worker * 96*6777b538SAndroid Build Coastguard Worker * # JSON Mapping 97*6777b538SAndroid Build Coastguard Worker * 98*6777b538SAndroid Build Coastguard Worker * In JSON format, the Duration type is encoded as a string rather than an 99*6777b538SAndroid Build Coastguard Worker * object, where the string ends in the suffix "s" (indicating seconds) and 100*6777b538SAndroid Build Coastguard Worker * is preceded by the number of seconds, with nanoseconds expressed as 101*6777b538SAndroid Build Coastguard Worker * fractional seconds. For example, 3 seconds with 0 nanoseconds should be 102*6777b538SAndroid Build Coastguard Worker * encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should 103*6777b538SAndroid Build Coastguard Worker * be expressed in JSON format as "3.000000001s", and 3 seconds and 1 104*6777b538SAndroid Build Coastguard Worker * microsecond should be expressed in JSON format as "3.000001s". 105*6777b538SAndroid Build Coastguard Worker **/ 106*6777b538SAndroid Build Coastguard Worker GPB_FINAL @interface GPBDuration : GPBMessage 107*6777b538SAndroid Build Coastguard Worker 108*6777b538SAndroid Build Coastguard Worker /** 109*6777b538SAndroid Build Coastguard Worker * Signed seconds of the span of time. Must be from -315,576,000,000 110*6777b538SAndroid Build Coastguard Worker * to +315,576,000,000 inclusive. Note: these bounds are computed from: 111*6777b538SAndroid Build Coastguard Worker * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years 112*6777b538SAndroid Build Coastguard Worker **/ 113*6777b538SAndroid Build Coastguard Worker @property(nonatomic, readwrite) int64_t seconds; 114*6777b538SAndroid Build Coastguard Worker 115*6777b538SAndroid Build Coastguard Worker /** 116*6777b538SAndroid Build Coastguard Worker * Signed fractions of a second at nanosecond resolution of the span 117*6777b538SAndroid Build Coastguard Worker * of time. Durations less than one second are represented with a 0 118*6777b538SAndroid Build Coastguard Worker * `seconds` field and a positive or negative `nanos` field. For durations 119*6777b538SAndroid Build Coastguard Worker * of one second or more, a non-zero value for the `nanos` field must be 120*6777b538SAndroid Build Coastguard Worker * of the same sign as the `seconds` field. Must be from -999,999,999 121*6777b538SAndroid Build Coastguard Worker * to +999,999,999 inclusive. 122*6777b538SAndroid Build Coastguard Worker **/ 123*6777b538SAndroid Build Coastguard Worker @property(nonatomic, readwrite) int32_t nanos; 124*6777b538SAndroid Build Coastguard Worker 125*6777b538SAndroid Build Coastguard Worker @end 126*6777b538SAndroid Build Coastguard Worker 127*6777b538SAndroid Build Coastguard Worker NS_ASSUME_NONNULL_END 128*6777b538SAndroid Build Coastguard Worker 129*6777b538SAndroid Build Coastguard Worker CF_EXTERN_C_END 130*6777b538SAndroid Build Coastguard Worker 131*6777b538SAndroid Build Coastguard Worker #pragma clang diagnostic pop 132*6777b538SAndroid Build Coastguard Worker 133*6777b538SAndroid Build Coastguard Worker // @@protoc_insertion_point(global_scope) 134