aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/protobuf/objectivec/GPBWellKnownTypes.m
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/protobuf/objectivec/GPBWellKnownTypes.m')
-rw-r--r--third_party/protobuf/objectivec/GPBWellKnownTypes.m272
1 files changed, 0 insertions, 272 deletions
diff --git a/third_party/protobuf/objectivec/GPBWellKnownTypes.m b/third_party/protobuf/objectivec/GPBWellKnownTypes.m
deleted file mode 100644
index 2808afeb23..0000000000
--- a/third_party/protobuf/objectivec/GPBWellKnownTypes.m
+++ /dev/null
@@ -1,272 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2015 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Importing sources here to force the linker to include our category methods in
-// the static library. If these were compiled separately, the category methods
-// below would be stripped by the linker.
-
-#import "GPBWellKnownTypes.h"
-
-#import "GPBUtilities_PackagePrivate.h"
-
-NSString *const GPBWellKnownTypesErrorDomain =
- GPBNSStringifySymbol(GPBWellKnownTypesErrorDomain);
-
-static NSString *kTypePrefixGoogleApisCom = @"type.googleapis.com/";
-
-static NSTimeInterval TimeIntervalFromSecondsAndNanos(int64_t seconds,
- int32_t nanos) {
- return seconds + (NSTimeInterval)nanos / 1e9;
-}
-
-static int32_t SecondsAndNanosFromTimeInterval(NSTimeInterval time,
- int64_t *outSeconds,
- BOOL nanosMustBePositive) {
- NSTimeInterval seconds;
- NSTimeInterval nanos = modf(time, &seconds);
-
- if (nanosMustBePositive && (nanos < 0)) {
- // Per Timestamp.proto, nanos is non-negative and "Negative second values with
- // fractions must still have non-negative nanos values that count forward in
- // time. Must be from 0 to 999,999,999 inclusive."
- --seconds;
- nanos = 1.0 + nanos;
- }
-
- nanos *= 1e9;
- *outSeconds = (int64_t)seconds;
- return (int32_t)nanos;
-}
-
-static NSString *BuildTypeURL(NSString *typeURLPrefix, NSString *fullName) {
- if (typeURLPrefix.length == 0) {
- return fullName;
- }
-
- if ([typeURLPrefix hasSuffix:@"/"]) {
- return [typeURLPrefix stringByAppendingString:fullName];
- }
-
- return [NSString stringWithFormat:@"%@/%@", typeURLPrefix, fullName];
-}
-
-static NSString *ParseTypeFromURL(NSString *typeURLString) {
- NSRange range = [typeURLString rangeOfString:@"/" options:NSBackwardsSearch];
- if ((range.location == NSNotFound) ||
- (NSMaxRange(range) == typeURLString.length)) {
- return nil;
- }
- NSString *result = [typeURLString substringFromIndex:range.location + 1];
- return result;
-}
-
-#pragma mark - GPBTimestamp
-
-@implementation GPBTimestamp (GBPWellKnownTypes)
-
-- (instancetype)initWithDate:(NSDate *)date {
- return [self initWithTimeIntervalSince1970:date.timeIntervalSince1970];
-}
-
-- (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
- if ((self = [super init])) {
- int64_t seconds;
- int32_t nanos = SecondsAndNanosFromTimeInterval(
- timeIntervalSince1970, &seconds, YES);
- self.seconds = seconds;
- self.nanos = nanos;
- }
- return self;
-}
-
-- (NSDate *)date {
- return [NSDate dateWithTimeIntervalSince1970:self.timeIntervalSince1970];
-}
-
-- (void)setDate:(NSDate *)date {
- self.timeIntervalSince1970 = date.timeIntervalSince1970;
-}
-
-- (NSTimeInterval)timeIntervalSince1970 {
- return TimeIntervalFromSecondsAndNanos(self.seconds, self.nanos);
-}
-
-- (void)setTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
- int64_t seconds;
- int32_t nanos =
- SecondsAndNanosFromTimeInterval(timeIntervalSince1970, &seconds, YES);
- self.seconds = seconds;
- self.nanos = nanos;
-}
-
-@end
-
-#pragma mark - GPBDuration
-
-@implementation GPBDuration (GBPWellKnownTypes)
-
-- (instancetype)initWithTimeInterval:(NSTimeInterval)timeInterval {
- if ((self = [super init])) {
- int64_t seconds;
- int32_t nanos = SecondsAndNanosFromTimeInterval(
- timeInterval, &seconds, NO);
- self.seconds = seconds;
- self.nanos = nanos;
- }
- return self;
-}
-
-- (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
- return [self initWithTimeInterval:timeIntervalSince1970];
-}
-
-- (NSTimeInterval)timeInterval {
- return TimeIntervalFromSecondsAndNanos(self.seconds, self.nanos);
-}
-
-- (void)setTimeInterval:(NSTimeInterval)timeInterval {
- int64_t seconds;
- int32_t nanos =
- SecondsAndNanosFromTimeInterval(timeInterval, &seconds, NO);
- self.seconds = seconds;
- self.nanos = nanos;
-}
-
-- (NSTimeInterval)timeIntervalSince1970 {
- return self.timeInterval;
-}
-
-- (void)setTimeIntervalSince1970:(NSTimeInterval)timeIntervalSince1970 {
- self.timeInterval = timeIntervalSince1970;
-}
-
-@end
-
-#pragma mark - GPBAny
-
-@implementation GPBAny (GBPWellKnownTypes)
-
-+ (instancetype)anyWithMessage:(GPBMessage *)message
- error:(NSError **)errorPtr {
- return [self anyWithMessage:message
- typeURLPrefix:kTypePrefixGoogleApisCom
- error:errorPtr];
-}
-
-+ (instancetype)anyWithMessage:(GPBMessage *)message
- typeURLPrefix:(NSString *)typeURLPrefix
- error:(NSError **)errorPtr {
- return [[[self alloc] initWithMessage:message
- typeURLPrefix:typeURLPrefix
- error:errorPtr] autorelease];
-}
-
-- (instancetype)initWithMessage:(GPBMessage *)message
- error:(NSError **)errorPtr {
- return [self initWithMessage:message
- typeURLPrefix:kTypePrefixGoogleApisCom
- error:errorPtr];
-}
-
-- (instancetype)initWithMessage:(GPBMessage *)message
- typeURLPrefix:(NSString *)typeURLPrefix
- error:(NSError **)errorPtr {
- self = [self init];
- if (self) {
- if (![self packWithMessage:message
- typeURLPrefix:typeURLPrefix
- error:errorPtr]) {
- [self release];
- self = nil;
- }
- }
- return self;
-}
-
-- (BOOL)packWithMessage:(GPBMessage *)message
- error:(NSError **)errorPtr {
- return [self packWithMessage:message
- typeURLPrefix:kTypePrefixGoogleApisCom
- error:errorPtr];
-}
-
-- (BOOL)packWithMessage:(GPBMessage *)message
- typeURLPrefix:(NSString *)typeURLPrefix
- error:(NSError **)errorPtr {
- NSString *fullName = [message descriptor].fullName;
- if (fullName.length == 0) {
- if (errorPtr) {
- *errorPtr =
- [NSError errorWithDomain:GPBWellKnownTypesErrorDomain
- code:GPBWellKnownTypesErrorCodeFailedToComputeTypeURL
- userInfo:nil];
- }
- return NO;
- }
- if (errorPtr) {
- *errorPtr = nil;
- }
- self.typeURL = BuildTypeURL(typeURLPrefix, fullName);
- self.value = message.data;
- return YES;
-}
-
-- (GPBMessage *)unpackMessageClass:(Class)messageClass
- error:(NSError **)errorPtr {
- NSString *fullName = [messageClass descriptor].fullName;
- if (fullName.length == 0) {
- if (errorPtr) {
- *errorPtr =
- [NSError errorWithDomain:GPBWellKnownTypesErrorDomain
- code:GPBWellKnownTypesErrorCodeFailedToComputeTypeURL
- userInfo:nil];
- }
- return nil;
- }
-
- NSString *expectedFullName = ParseTypeFromURL(self.typeURL);
- if ((expectedFullName == nil) || ![expectedFullName isEqual:fullName]) {
- if (errorPtr) {
- *errorPtr =
- [NSError errorWithDomain:GPBWellKnownTypesErrorDomain
- code:GPBWellKnownTypesErrorCodeTypeURLMismatch
- userInfo:nil];
- }
- return nil;
- }
-
- // Any is proto3, which means no extensions, so this assumes anything put
- // within an any also won't need extensions. A second helper could be added
- // if needed.
- return [messageClass parseFromData:self.value
- error:errorPtr];
-}
-
-@end