aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Local/FSTQueryData.mm
diff options
context:
space:
mode:
authorGravatar Gil <mcg@google.com>2018-01-31 11:23:55 -0800
committerGravatar GitHub <noreply@github.com>2018-01-31 11:23:55 -0800
commit729b8d176c75ecc0cbbd137cc6811116a64e310a (patch)
tree22b793b03611ce5ad615b7c7d9579f5ba5206b4a /Firestore/Source/Local/FSTQueryData.mm
parent693d0649bfcc9c32201e2431ae08ea85fdbdb617 (diff)
Move all Firestore Objective-C to Objective-C++ (#734)
* Move all Firestore files to Objective-C++ * Update project file references * Don't use module imports from Objective-C++ * Use extern "C" for C-accessible globals * Work around more stringent type checking in Objective-C++ * NSMutableDictionary ivars aren't implicitly casted to NSDictionary * FSTMaybeDocument callback can't be passed a function that accepts FSTDocument * NSComparisonResult can't be multiplied by -1 without casting * Add a #include <inttypes.h> where needed * Avoid using C++ keywords as variables * Remove #if __cplusplus guards
Diffstat (limited to 'Firestore/Source/Local/FSTQueryData.mm')
-rw-r--r--Firestore/Source/Local/FSTQueryData.mm98
1 files changed, 98 insertions, 0 deletions
diff --git a/Firestore/Source/Local/FSTQueryData.mm b/Firestore/Source/Local/FSTQueryData.mm
new file mode 100644
index 0000000..6bb716a
--- /dev/null
+++ b/Firestore/Source/Local/FSTQueryData.mm
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import "Firestore/Source/Local/FSTQueryData.h"
+
+#import "Firestore/Source/Core/FSTQuery.h"
+#import "Firestore/Source/Core/FSTSnapshotVersion.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation FSTQueryData
+
+- (instancetype)initWithQuery:(FSTQuery *)query
+ targetID:(FSTTargetID)targetID
+ listenSequenceNumber:(FSTListenSequenceNumber)sequenceNumber
+ purpose:(FSTQueryPurpose)purpose
+ snapshotVersion:(FSTSnapshotVersion *)snapshotVersion
+ resumeToken:(NSData *)resumeToken {
+ self = [super init];
+ if (self) {
+ _query = query;
+ _targetID = targetID;
+ _sequenceNumber = sequenceNumber;
+ _purpose = purpose;
+ _snapshotVersion = snapshotVersion;
+ _resumeToken = [resumeToken copy];
+ }
+ return self;
+}
+
+- (instancetype)initWithQuery:(FSTQuery *)query
+ targetID:(FSTTargetID)targetID
+ listenSequenceNumber:(FSTListenSequenceNumber)sequenceNumber
+ purpose:(FSTQueryPurpose)purpose {
+ return [self initWithQuery:query
+ targetID:targetID
+ listenSequenceNumber:sequenceNumber
+ purpose:purpose
+ snapshotVersion:[FSTSnapshotVersion noVersion]
+ resumeToken:[NSData data]];
+}
+
+- (BOOL)isEqual:(id)object {
+ if (self == object) {
+ return YES;
+ }
+ if (![object isKindOfClass:[FSTQueryData class]]) {
+ return NO;
+ }
+
+ FSTQueryData *other = (FSTQueryData *)object;
+ return [self.query isEqual:other.query] && self.targetID == other.targetID &&
+ self.purpose == other.purpose && [self.snapshotVersion isEqual:other.snapshotVersion] &&
+ [self.resumeToken isEqual:other.resumeToken];
+}
+
+- (NSUInteger)hash {
+ NSUInteger result = [self.query hash];
+ result = result * 31 + self.targetID;
+ result = result * 31 + self.purpose;
+ result = result * 31 + [self.snapshotVersion hash];
+ result = result * 31 + [self.resumeToken hash];
+ return result;
+}
+
+- (NSString *)description {
+ return [NSString
+ stringWithFormat:@"<FSTQueryData: query:%@ target:%d purpose:%lu version:%@ resumeToken:%@)>",
+ self.query, self.targetID, (unsigned long)self.purpose, self.snapshotVersion,
+ self.resumeToken];
+}
+
+- (instancetype)queryDataByReplacingSnapshotVersion:(FSTSnapshotVersion *)snapshotVersion
+ resumeToken:(NSData *)resumeToken {
+ return [[FSTQueryData alloc] initWithQuery:self.query
+ targetID:self.targetID
+ listenSequenceNumber:self.sequenceNumber
+ purpose:self.purpose
+ snapshotVersion:snapshotVersion
+ resumeToken:resumeToken];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END