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