Commit Graph
34 Commits
Author SHA1 Message Date
zxu a441190635 Implement Firestore DatabaseInfo and port both Database{Id,Info} C++ to the iOS code (#738)
* implement Firestore DatabaseInfo in C++

* temporary stash changes; blocking on the massive renaming of .m to .mm

* add database_info_test to project

* finish port DatabaseId and fix style, modular fixing DatabaseInfo

* port DatabaseInfo

* remove FSTDatabase{ID,Info} and their tests from project

* fix unit test

* use namespace alias

* use namespace alias, leftover

* address more changes

* refactoring to use raw pointer instead of value for property

* address changes

* remove self->

* fix style

* remove the name suffix Alloc

* fix a bug
2018-02-06 13:51:11 -05:00
Gil d45900b85b Align tests and integration test header search paths (#737) 2018-02-01 13:14:53 -05:00
Gil ac30522234 Start on ArraySortedMap in C++ (#721)
* Implement ArraySortedMap.remove
* Implement ArraySortedMap.insert
* Ensure ArraySortedMap.insert avoids copying on duplicates
* Port more ArraySortedMapTests
2018-01-31 14:28:20 -08:00
Gil 729b8d176c 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
2018-01-31 11:23:55 -08:00
Greg Soltis 3cbdbf2652 Schema migrations for LevelDB (#728)
* Implement schema versions

* Style fixes

* newlines, copyrights, assumptions

* Fix nullability

* Raw ptr -> shared_ptr

* kVersionTableGlobal -> kVersionGlobalTable

* Drop utils, move into static methods

* Drop extra include

* Add a few more comments

* Move version constant into migrations file

* formatting?

* Fix comment
2018-01-30 14:36:22 -08:00
zxu 6474a82fd6 Firestore DatabaseId in C++ (#727)
* Implement DataBaseId in C++

* add database_id_test to project

* fix project

* address changes

* fix style
2018-01-29 15:55:01 -05:00
zxu af6976a907 normalize and port the rest of Firebase/Port code (#713)
* normalize bits
* normalize ordered_code
2018-01-27 14:53:27 -08:00
zxu 7226b4adf3 port TargetIdGenerator to iOS (#709)
* port TargetIdGenerator to iOS

* fix style

* move pointer property to instance variable

* TriggerTravis
2018-01-25 18:39:46 -05:00
zxu 821fb909a3 implement TargetIdGenerator in C++ for Firestore (#701)
* implement `TargetIdGenerator`

* address changes
2018-01-25 13:05:30 -05:00
zxu 5fdda3fa83 normalize string_util (#708)
* refactoring string_util
* port string_util to iOS
2018-01-25 13:03:07 -05:00
zxu bfa0e40795 Implement the rest of FieldValue types for C++ (#687)
* implement FieldValue for null and boolean.
* Implement number and string FieldValue.
* Implement object FieldValue.
* implement timestamp FieldValue.
* Implement number and string FieldValue.
* implement public type `Blob` and `GeoPoint`
* implement Blob FieldValue
* Implement GeoPoint FieldValue
* refactoring `Blob`
2018-01-25 09:14:19 -05:00
Gil 39d8252300 Port comparison to C++ (#678)
This reimplements our comparison functions as C++ Comparators and then provides compatibility shims for interoperating with existing Objective-C usage.

A few specialized comparators aren't suitable for porting but only have a single usage (e.g. CompareBytes for comparing NSData * instances). In these cases I've moved them into the caller.

* Use int32_t for typeof(ID) in FSTDocumentReference

* Migrate callers of FSTComparison.h to Objective-C++

* Port comparison to C++

* Migrate usages of FSTComparison.h to C++ equivalents

* Remove FSTComparison
2018-01-19 12:27:11 -08:00
zxu cac2c3ff7a implement FieldValue for null, boolean, and array in C++. (#637)
* implement FieldValue for null and boolean.

* refactoring to use union type instead of poly

* refactor using union design intead of poly

* refactoring to use anonymous union and fix styles

* small fix

* add field_value_test to the project

* fix warning of cmake and fix style
2018-01-17 13:18:54 -05:00
Gil 2700198d93 Add assert_test to the Xcode build (#671)
* Exclude stdio-backed assert from the Xcode build

* Add assert_test to the Xcode build
2018-01-16 13:16:58 -05:00
Michael Lehenbauer aa00c74449 Merge branch 'master' into mikelehen/merge-master-to-firestore-api-changes 2018-01-09 12:57:21 -08:00
Gil 0f6103e404 Port StringPrintf from //base (#624)
* Port StringPrintf from //base.

  Prefer this to approaches based on variadic templates. While the variadic
  template mechanisms are strictly safer, they result in binary bloat we
  can't afford.

  This is essentially the same StringPrintf previously open sourced as a
  part of protobuf, though updated for C++11 which saves a copy and a
  temporary buffer on the heap.

* Add abseil as a subdirectory of Firestore

  This saves having to redefine all the libraries that abseil defines as
  imported libraries.

* Rename firebase_firesture_util_log_* targets

  Cut the log out of the name to reflect that these will get more
  components besides just logging.
2018-01-08 08:57:36 -08:00
Gil 1ede1c9cb3 Use the log_apple.mm logger from C++ on iOS (#593)
* Add all .mm files in Firestore/core to the build (which matches
  log_apple.mm).
* Exclude log_stdio.cc
* Add log_test.cc to the project
2018-01-01 17:17:53 -08:00
zxu 9ddf3637ac Firestore isEqual() on Public Types (#569)
* add bone code for new isEqual and unit test for old isEqual

*   add bone code for `FIRCollectionReference`, `FIRDocumentSnapshot`, `FIRFieldValue`, `FIRQuerySnapshot`, `FIRSnapshotMetadata`;
*   change inconsistenciness of `FIRFieldPath.isEqual` implementation;
*   add unit test (and file) for `FIRDocumentReferenceTest.m`, `FIRFieldPathTest.m`, `FIRQueryTests.testEquals`; `FIRGeoPoint` already has test and Blob is internal type.

* Implement isEqual for FIRCollectionReference

adding the working code and unit test.

* implement isEqual for FIRSnapshotMetadata

* Implement isEqual for FIRDocumentSnapshot

* Implement isEqual for FIRQuerySnapshot

* (un)implement `isEqual` for `FIRFieldValue`

Since `FIRFieldValue` both types are singleton, we do not need override `isEqual`. Add test to test the default `NSObject` `isEqual` works just fine.

* fix style with `scripts/style.sh`

* Implement hash for those with overridden isEqual without hash yet.

* refactor to use test helper functions -- FSTTestFirestore, FSTTestPath, FSTTestDocKey

* refactor using test helper `FSTTestDocSnapshot`, `FSTTestFieldPath`, `FSTTestQuery`, `FSTTestDoc`

* refactoring to use test helper method `FSTTestQuerySnapshot`,

* remove unneccessary nil-check, check isKindOfClass instead of isEqual

* refactoring: adding `FSTAPIHelpers.{h,m}`, `FSTTest{Collection,Document}Ref`,  better naming and style fix

* a file forgot in last commit

* mainly clean up import and some minor refactoring

* fix style via style.sh

* minor style fix

* add pragma ignored -Wnonnull
2017-12-19 13:47:04 -05:00
Gil ea3369c192 Use angle brackets for nonlocal #includes in Firestore (#580) 2017-12-19 07:44:28 -08:00
Sebastian Schmidt e019a9461a Merge branch 'firestore-api-changes' into mrschmidt-timestamps 2017-12-12 08:03:59 +08:00
zxu 5da88e4b9b Implement NSPredicate-based query (#531)
*   implement queryFilteredUsingPredicate in FIRQuery;
*   add unit test and integration test for queryFilteredUsingPredicate;
*   project change of adding the FIRQueryTests.m file;
*   refactoring queryFilteredUsingPredicate to split logic into two helpers;
2017-12-07 15:36:15 -05:00
Sebastian Schmidt a8948ced26 Adding SnapshotOptions to deal with pending ServerTimestamps 2017-12-05 23:22:16 -08:00
Gil 530437ea7a Move sources into firebase::firestore and internal namespaces (#494)
* Move sources into firebase::firestore and internal namespaces

Combine support and core/util packages; this distinction wasn't really
paying its freight.
2017-11-30 12:26:16 -08:00
rsgowman 4ec5f00b1d Fix StringView to properly convert NSStrings (#509)
NSStrings are utf16, so NSString::length returns the number of utf16
characters present in the string. When the string is entirely made up of
US-ASCII characters, everything's fine. But when characters requiring 16
bits are present, the size calculations were incorrect.

Fixed by calculating the length based on the destination character set
(i.e. UTF8).
2017-11-30 13:41:26 -05:00
Gil 7459be46ff Port autoid to C++ and remove FSTUtil (#475)
* Port autoid to C++
* Reimplement FSTUtil on top of firestore::CreateAutoId directly
* Migrate FSTUtil callers to directly use firestore::CreateAutoId
* Remove FSTUtil
2017-11-27 21:00:18 -08:00
Paul Beusterien 3e592526ec Buildable and interoperable source pods (#444) 2017-11-21 17:02:22 -08:00
Gil 5e49692058 Add SecureRandom (#473)
* Add SecureRandom
* Add CMake support for building src/support
2017-11-20 20:53:08 -08:00
Gil 4fbc96904f Use fully qualified imports in Firestore (#467)
This simplifies the import process back into google3 and allows us to add additional directories to the project without needing to update the project files for each directory we add. This shows up most clearly in the change to Firestore/Example/Firestore.xcodeproj/project.pbxproj: this no longer needs to list essentially every directory in the project as a header search path.

* Clang-format configuration for C++ files
* Add support C++-only sources to the podspec
* Podspec support for fully qualified imports
* xcodeproj changes for fully-qualified imports
* Use fully-qualified imports in Firestore sources
2017-11-16 20:52:01 -08:00
Gil 86f429b2f0 Make FSTIntegrationTestCase Objective-C++ (#439)
* Make all FIRLogger functions extern "C"

* Make FSTIntegrationTestCase Objective-C++

Keep external interface to FSTIntegrationTestCase Objective-C

* Add explicit dependency on Firebase/Community/Core from Tests

This fixes a linkage error on a missing _FIRSetLoggerLevel symbol
2017-11-09 09:16:20 -08:00
Gil c4c7777e75 Run GoogleTest-based C++ tests in Xcode (#420)
* Use GoogleTest as a dependency of Firestore_Tests
* Remove top-level leveldb-library from HEADER_SEARCH_PATHS
* Add string_util_test to the project and get it to build
* Implement FSTGoogleTestTests, a bridge between GoogleTest and XCTest
2017-11-08 14:46:50 -08:00
Sebastian Schmidt 02ff6bbee9 Closing the write and watch stream after 60s of idleness (#388) 2017-10-30 18:17:16 -07:00
Paul Beusterien 1db9fd83df Really fix pod update warning (#416) 2017-10-30 18:10:51 -07:00
Sebastian Schmidt 8bdce1dfa4 Moving the StreamTest to integration tests (#391) 2017-10-24 12:57:56 -07:00
Gil bde743ed25 Release 4.3.0 (#327)
Initial release of Firestore at 0.8.0
Bump FirebaseCommunity to 0.1.3
2017-10-03 08:55:22 -07:00