diff --git a/SpeckleLib/Speckle/Database/AccountDBase.cpp b/SpeckleLib/Speckle/Database/AccountDBase.cpp new file mode 100644 index 0000000..164b504 --- /dev/null +++ b/SpeckleLib/Speckle/Database/AccountDBase.cpp @@ -0,0 +1,50 @@ +#include "Active/Database/Storage/SQLiteEngine.h" +#include "Active/Setting/ValueSetting.h" +#include "Active/Setting/Values/StringValue.h" +#include "Speckle/Database/AccountDBase.h" + +using namespace active::database; +using namespace active::serialise::json; +using namespace active::setting; +using namespace speckle::record::cred; +using namespace speckle::database; +using namespace speckle::utility; + +using AccountsEngine = SQLiteEngine; + +namespace { + + enum Fields { + hashID = 0, + contentID, + }; + + const char* accountsDBaseName = "accounts"; + const char* accountsTableName = "objects"; + const char* hashFieldName = "hash"; + const char* contentFieldName = "content"; + +} +// template + +/*-------------------------------------------------------------------- + Constructor + + path: Path to the database file + --------------------------------------------------------------------*/ +AccountDBase::AccountDBase(const active::file::Path& path) : base{ + std::make_unique( + path, DBaseSchema{ + accountsDBaseName, { + { + accountsTableName, Fields::hashID, Fields::contentID, { + ValueSetting{StringValue{}, hashFieldName}, + ValueSetting{StringValue{}, contentFieldName}, + } + } + } + } + ) + } { + +} //AccountDBase::AccountDBase diff --git a/SpeckleLib/Speckle/Database/AccountDBase.h b/SpeckleLib/Speckle/Database/AccountDBase.h new file mode 100644 index 0000000..b789855 --- /dev/null +++ b/SpeckleLib/Speckle/Database/AccountDBase.h @@ -0,0 +1,56 @@ +#ifndef SPECKLE_DATABASE_ACCOUNT_DBASE +#define SPECKLE_DATABASE_ACCOUNT_DBASE + +#include "Active/Database/Storage/SQLiteEngine.h" +#include "Active/Database/Storage/Storage.h" +#include "Active/File/Path.h" +#include "Active/Serialise/JSON/JSONTransport.h" +#include "Speckle/Record/Credentials/Account.h" +#include "Speckle/Utility/String.h" + +#include + +namespace speckle::database { + + /*! + A base class for an addon + */ + class AccountDBase : public active::database::Storage { + public: + + // MARK: - Types + + using base = active::database::Storage; + + using type_identity_t = std::type_identity>::type; + + // MARK: - Constructors + + /*! + Constructor + @param path Path to the database file + */ + AccountDBase(const active::file::Path& path); + /*! + Copy constructor + @param source The object to copy + */ + AccountDBase(const AccountDBase& source) : base{source} {} + /*! + Destructor + */ + ~AccountDBase(); + + // MARK: - Functions (const) + + + // MARK: - Functions (mutating) + + }; + +} + +#endif //SPECKLE_DATABASE_ACCOUNT_DBASE diff --git a/SpeckleLib/Speckle/Database/Content/Record.cpp b/SpeckleLib/Speckle/Database/Content/Record.cpp index 66b808e..87266dc 100644 --- a/SpeckleLib/Speckle/Database/Content/Record.cpp +++ b/SpeckleLib/Speckle/Database/Content/Record.cpp @@ -6,42 +6,3 @@ using namespace active::serialise; using namespace speckle::database; using namespace speckle::utility; -/*-------------------------------------------------------------------- - Fill an inventory with the package items - @param inventory The inventory to receive the package items - @return True if the package has added items to the inventory - --------------------------------------------------------------------*/ -bool Record::fillInventory(Inventory& inventory) const { - //TODO: Complete - return true; -} //Record::fillInventory - - -/*-------------------------------------------------------------------- - Get the specified cargo - @param item The inventory item to retrieve - @return The requested cargo (nullptr on failure) - --------------------------------------------------------------------*/ -Cargo::Unique Record::getCargo(const Inventory::Item& item) const { - //TODO: Complete - return nullptr; -} //Record::getCargo - - -/*-------------------------------------------------------------------- - Set to the default package content - --------------------------------------------------------------------*/ -void Record::setDefault() { - //TODO: Complete -} //Record::setDefault - - -/*-------------------------------------------------------------------- - Validate the cargo data - - return: True if the data has been validated - --------------------------------------------------------------------*/ -bool Record::validate() { - //TODO: Complete - return true; -} //Record::validate diff --git a/SpeckleLib/Speckle/Database/Content/Record.h b/SpeckleLib/Speckle/Database/Content/Record.h index d98d3f4..ecc6257 100644 --- a/SpeckleLib/Speckle/Database/Content/Record.h +++ b/SpeckleLib/Speckle/Database/Content/Record.h @@ -1,19 +1,21 @@ #ifndef SPECKLE_DATABASE_RECORD #define SPECKLE_DATABASE_RECORD -#include "Active/Serialise/Package/Package.h" -#include "Speckle/Database/Content/Link.h" +#include "Active/Database/Content/Record.h" +#include "Speckle/Database/Identity/Link.h" namespace speckle::database { /*! Base class for a database record */ - class Record : public active::serialise::Package, public active::utility::Cloner { + class Record : public active::database::Record { public: // MARK: - Types + using base = active::database::Record; + ///Unique pointer using Unique = std::unique_ptr; ///Shared pointer using Shared = std::shared_ptr; @@ -26,81 +28,20 @@ namespace speckle::database { Constructor @param ID The record ID */ - Record(speckle::utility::Guid ID) : m_ID{ID} {} + Record(speckle::utility::String ID) : base{ID} {} /*! Destructor */ virtual ~Record() {} // MARK: - Functions (const) - - /*! - Get the record ID - @return The record ID - */ - speckle::utility::Guid getID() const { return m_ID; } - /*! - Get the record unique ID - @return The record unique ID - */ - speckle::utility::Guid getUniqueID() const { return m_uniqueID; } - /*! - Get the record index - @return The record index - */ - virtual Index getIndex() const { return Index{m_ID, m_ownerID}; } - /*! - Get the record link - @return The record link - */ - virtual Link getLink() const { return Link{getIndex()}; } + // MARK: - Functions (mutating) - - /*! - Set the record ID - @param ID The record ID - */ - void setID(speckle::utility::Guid ID) { m_ID = ID; } - /*! - Set the record unique ID - @param ID The record unique ID - */ - void setUniqueID(speckle::utility::Guid ID) { m_uniqueID = ID; } + // MARK: - Serialisation - /*! - Fill an inventory with the package items - @param inventory The inventory to receive the package items - @return True if the package has added items to the inventory - */ - bool fillInventory(active::serialise::Inventory& inventory) const override; - /*! - Get the specified cargo - @param item The inventory item to retrieve - @return The requested cargo (nullptr on failure) - */ - Cargo::Unique getCargo(const active::serialise::Inventory::Item& item) const override; - /*! - Set to the default package content - */ - void setDefault() override; - /*! - Validate the cargo data - @return True if the data has been validated - */ - bool validate() override; - - private: - ///The record ID (may not be unique across models) - speckle::utility::Guid m_ID = speckle::utility::Guid{true}; - ///The record unique ID - speckle::utility::Guid m_uniqueID = speckle::utility::Guid{true}; - ///The record owner ID (null guid if unspecified) - speckle::utility::Guid m_ownerID; - ///The last edit time - active::utility::Time editTime = active::utility::Time{}; }; } diff --git a/SpeckleLib/Speckle/Database/Content/Index.h b/SpeckleLib/Speckle/Database/Identity/Index.h similarity index 56% rename from SpeckleLib/Speckle/Database/Content/Index.h rename to SpeckleLib/Speckle/Database/Identity/Index.h index 87eea65..8b49749 100644 --- a/SpeckleLib/Speckle/Database/Content/Index.h +++ b/SpeckleLib/Speckle/Database/Identity/Index.h @@ -1,7 +1,8 @@ #ifndef SPECKLE_DATABASE_INDEX #define SPECKLE_DATABASE_INDEX -#include "Speckle/Utility/Guid.h" +#include "Active/Database/Identity/Link.h" +#include "Speckle/Utility/String.h" namespace speckle::database { @@ -12,23 +13,16 @@ namespace speckle::database { this is typically a guid, for Revit a string and for Vectorworks a handle. Note that this index is not necessarily persistent between sessions. */ - class Index : public speckle::utility::Guid { + class Index : public active::database::Index { public: // MARK: - Types - using base = speckle::utility::Guid; + using base = active::database::Index; // MARK: - Constructors using base::base; - - Index(speckle::utility::Guid ID, speckle::utility::Guid dbaseID) : base{ID}, databaseID{dbaseID} {} - - // MARK: - Public variables - - ///ID of the source database (not defined in every case, undefined = null guid) - speckle::utility::Guid databaseID; }; } diff --git a/SpeckleLib/Speckle/Database/Content/Link.cpp b/SpeckleLib/Speckle/Database/Identity/Link.cpp similarity index 63% rename from SpeckleLib/Speckle/Database/Content/Link.cpp rename to SpeckleLib/Speckle/Database/Identity/Link.cpp index 46ef668..4da7928 100644 --- a/SpeckleLib/Speckle/Database/Content/Link.cpp +++ b/SpeckleLib/Speckle/Database/Identity/Link.cpp @@ -1,6 +1,8 @@ -#include "Speckle/Database/Content/Link.h" +#include "Speckle/Database/Identity/Link.h" +#include "Speckle/Utility/Guid.h" using namespace speckle::database; +using namespace speckle::utility; #ifdef ARCHICAD /*-------------------------------------------------------------------- @@ -8,7 +10,7 @@ using namespace speckle::database; selected: Information about a selected Archicad element --------------------------------------------------------------------*/ -Link::Link(const API_Neig& selected) : recordID{selected.guid} { +Link::Link(const API_Neig& selected) : base{String{Guid{selected.guid}}} { //More info should be extracted from API_Neig in future (as required) } //Link::Link #endif diff --git a/SpeckleLib/Speckle/Database/Content/Link.h b/SpeckleLib/Speckle/Database/Identity/Link.h similarity index 57% rename from SpeckleLib/Speckle/Database/Content/Link.h rename to SpeckleLib/Speckle/Database/Identity/Link.h index 9d15f2b..2500266 100644 --- a/SpeckleLib/Speckle/Database/Content/Link.h +++ b/SpeckleLib/Speckle/Database/Identity/Link.h @@ -2,7 +2,7 @@ #define SPECKLE_DATABASE_LINK #include "Active/Setting/SettingList.h" -#include "Speckle/Database/Content/Index.h" +#include "Speckle/Database/Identity/Index.h" namespace speckle::database { @@ -17,30 +17,17 @@ namespace speckle::database { A link may optionally carry any number of settings. In the context of a user selection (for example) there might be settings describing where the user made the selection (e.g. the hole in a floor slab), allowing a tool working on that selection to be more precise. */ - class Link : public active::setting::SettingList { + class Link : public active::database::Link { public: - + // MARK: - Types - using base = active::setting::SettingList; - ///Unique pointer - using Unique = std::unique_ptr; - ///Shared pointer - using Shared = std::shared_ptr; - ///Optional - using Option = std::optional; - + using base = active::database::Link; + // MARK: - Constructors using base::base; - /*! - Constructor - @param index An element index - @param origIndex The index of the original element (when the preceding index is to a proxy element) - */ - Link(const Index& index, const Index& origIndex = Index{}) : recordID{index}, originalID{origIndex} {} - #ifdef ARCHICAD /*! Constructor @@ -48,13 +35,6 @@ namespace speckle::database { */ Link(const API_Neig& selected); #endif - - // MARK: - Public variables - - ///ID of the linked record (defaults to null guid = undefined) - Index recordID; - ///ID of the original record (in the case where the record is proxy for another - null guid = undefined) - Index originalID; }; } diff --git a/SpeckleLib/Speckle/Event/Subscriber/SelectionSubscriber.cpp b/SpeckleLib/Speckle/Event/Subscriber/SelectionSubscriber.cpp index ff17f85..58f0ecd 100644 --- a/SpeckleLib/Speckle/Event/Subscriber/SelectionSubscriber.cpp +++ b/SpeckleLib/Speckle/Event/Subscriber/SelectionSubscriber.cpp @@ -1,7 +1,7 @@ #include "Speckle/Event/Subscriber/SelectionSubscriber.h" #include "Speckle/Environment/Addon.h" -#include "Speckle/Database/Content/Link.h" +#include "Active/Database/Identity/Link.h" #include "Speckle/Event/Type/SelectionEvent.h" using namespace active::environment; diff --git a/SpeckleLib/Speckle/Event/Type/SelectionEvent.h b/SpeckleLib/Speckle/Event/Type/SelectionEvent.h index d27d97a..9ebbe6c 100644 --- a/SpeckleLib/Speckle/Event/Type/SelectionEvent.h +++ b/SpeckleLib/Speckle/Event/Type/SelectionEvent.h @@ -5,7 +5,7 @@ #include "Active/Utility/Guid.h" #include "Active/Utility/String.h" -#include "Speckle/Database/Content/Link.h" +#include "Speckle/Database/Identity/Link.h" namespace speckle::event { diff --git a/SpeckleLib/Speckle/Record/Credentials/Account.cpp b/SpeckleLib/Speckle/Record/Credentials/Account.cpp index 3d0194c..7d42a2d 100644 --- a/SpeckleLib/Speckle/Record/Credentials/Account.cpp +++ b/SpeckleLib/Speckle/Record/Credentials/Account.cpp @@ -1,15 +1,40 @@ #include "Speckle/Record/Credentials/Account.h" +#include "Active/Serialise/Item/Wrapper/ValueWrap.h" #include "Speckle/Utility/Guid.h" using namespace active::serialise; using namespace speckle::record::cred; using namespace speckle::utility; +namespace { + + ///Serialisation fields + enum FieldIndex { + tokenID, + refreshTokenID, + isDefaultID, + isOnlineID, + serverInfoID, + userInfoID, + }; + + ///Serialisation field IDs + static std::array fieldID = { + Identity{"token"}, + Identity{"refreshToken"}, + Identity{"isDefault"}, + Identity{"isOnline"}, + Identity{"serverInfo"}, + Identity{"userInfo"}, + }; + +} + /*-------------------------------------------------------------------- Default constructor --------------------------------------------------------------------*/ -Account::Account(Guid ID) : Record{ID} { +Account::Account(const String& ID) : base{ID} { //TODO: Complete } //Account::Account @@ -20,8 +45,16 @@ Account::Account(Guid ID) : Record{ID} { @return True if the package has added items to the inventory --------------------------------------------------------------------*/ bool Account::fillInventory(Inventory& inventory) const { - //TODO: Complete - return true; + using enum Entry::Type; + inventory.merge(Inventory{ + { + { fieldID[tokenID], tokenID, element }, + { fieldID[refreshTokenID], refreshTokenID, element }, + { fieldID[isDefaultID], isDefaultID, element }, + { fieldID[isOnlineID], isOnlineID, element }, + }, + }.withType(&typeid(Account))); + return base::fillInventory(inventory); } //Account::fillInventory @@ -31,8 +64,21 @@ bool Account::fillInventory(Inventory& inventory) const { @return The requested cargo (nullptr on failure) --------------------------------------------------------------------*/ Cargo::Unique Account::getCargo(const Inventory::Item& item) const { - //TODO: Complete - return nullptr; + if (item.ownerType != &typeid(Account)) + return base::getCargo(item); + using namespace active::serialise; + switch (item.index) { + case tokenID: + return std::make_unique>(m_token); + case refreshTokenID: + return std::make_unique>(m_refreshToken); + case isDefaultID: + return std::make_unique>(m_isDefault); + case isOnlineID: + return std::make_unique>(m_isOnline); + default: + return nullptr; //Requested an unknown index + } } //Account::getCargo @@ -40,7 +86,10 @@ Cargo::Unique Account::getCargo(const Inventory::Item& item) const { Set to the default package content --------------------------------------------------------------------*/ void Account::setDefault() { - //TODO: Complete + m_token.clear(); + m_refreshToken.clear(); + m_isDefault = false; + m_isOnline = true; } //Account::setDefault @@ -50,6 +99,6 @@ void Account::setDefault() { return: True if the data has been validated --------------------------------------------------------------------*/ bool Account::validate() { - //TODO: Complete + //TODO: Fail conditions to be determined return true; } //Account::validate diff --git a/SpeckleLib/Speckle/Record/Credentials/Account.h b/SpeckleLib/Speckle/Record/Credentials/Account.h index 696434d..32d17cb 100644 --- a/SpeckleLib/Speckle/Record/Credentials/Account.h +++ b/SpeckleLib/Speckle/Record/Credentials/Account.h @@ -2,7 +2,7 @@ #define SPECKLE_RECORD_CRED_ACCOUNT #include "Active/Setting/SettingList.h" -#include "Speckle/Database/Content/Record.h" +#include "Active/Database/Content/Record.h" #include "Speckle/Utility/String.h" namespace speckle::record::cred { @@ -10,12 +10,12 @@ namespace speckle::record::cred { /*! User account record class */ - class Account : public speckle::database::Record { + class Account : public active::database::Record { public: // MARK: - Types - using base = speckle::database::Record; + using base = active::database::Record; ///Unique pointer using Unique = std::unique_ptr; ///Shared pointer @@ -31,13 +31,19 @@ namespace speckle::record::cred { Default constructor @param ID The account record ID */ - Account(speckle::utility::Guid ID = speckle::utility::Guid{}); + Account(const speckle::utility::String& ID = speckle::utility::String{}); + /*! + Copy constructor + @param source The object to copy + */ + Account(const Account& source) : base{source} {} /*! Object cloning @return A clone of this object */ Account* clonePtr() const override { return new Account{*this}; } + // MARK: - Functions (const) // MARK: - Functions (mutating) diff --git a/SpeckleLib/SpeckleLib.xcodeproj/project.pbxproj b/SpeckleLib/SpeckleLib.xcodeproj/project.pbxproj index ef914e5..3123a07 100644 --- a/SpeckleLib/SpeckleLib.xcodeproj/project.pbxproj +++ b/SpeckleLib/SpeckleLib.xcodeproj/project.pbxproj @@ -24,7 +24,13 @@ 21B67D002C7CE15100FD64FC /* Exception.h in Headers */ = {isa = PBXBuildFile; fileRef = 21B67CFE2C7CE15100FD64FC /* Exception.h */; }; 21B67D0D2C7E0E8D00FD64FC /* ErrorReport.h in Headers */ = {isa = PBXBuildFile; fileRef = 21B67D092C7E0E8D00FD64FC /* ErrorReport.h */; }; 21B67D0E2C7E0E8D00FD64FC /* ErrorReport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21B67D0C2C7E0E8D00FD64FC /* ErrorReport.cpp */; }; - 21F69EBE2C63C954008B6A06 /* Link.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69EBD2C63C954008B6A06 /* Link.cpp */; }; + 21D0BD202C86F0280077E104 /* AccountDBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21D0BD1D2C86F0280077E104 /* AccountDBase.cpp */; }; + 21D0BD212C86F0280077E104 /* AccountDBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 21D0BD1E2C86F0280077E104 /* AccountDBase.h */; }; + 21D0BD2B2C86FC350077E104 /* Record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21D0BD252C86FC350077E104 /* Record.cpp */; }; + 21D0BD2C2C86FC350077E104 /* Record.h in Headers */ = {isa = PBXBuildFile; fileRef = 21D0BD262C86FC350077E104 /* Record.h */; }; + 21D0BD312C86FE090077E104 /* Index.h in Headers */ = {isa = PBXBuildFile; fileRef = 21D0BD2D2C86FE090077E104 /* Index.h */; }; + 21D0BD322C86FE090077E104 /* Link.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21D0BD2E2C86FE090077E104 /* Link.cpp */; }; + 21D0BD332C86FE090077E104 /* Link.h in Headers */ = {isa = PBXBuildFile; fileRef = 21D0BD2F2C86FE090077E104 /* Link.h */; }; 21F69F3B2C6B880C008B6A06 /* JSBaseTransport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69F382C6B880B008B6A06 /* JSBaseTransport.cpp */; }; 21F69F512C6CCC25008B6A06 /* BrowserBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69F4A2C6CCC25008B6A06 /* BrowserBridge.cpp */; }; 21F69F612C6D0286008B6A06 /* GetBindingsMethodNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69F602C6D0286008B6A06 /* GetBindingsMethodNames.cpp */; }; @@ -32,7 +38,6 @@ 21F69F7E2C6FD9FC008B6A06 /* GetCallResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69F7A2C6FD9FC008B6A06 /* GetCallResult.cpp */; }; 21F69F812C6FF3B0008B6A06 /* BridgeArgumentWrap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69F802C6FF3B0008B6A06 /* BridgeArgumentWrap.cpp */; }; 21F69F962C71087A008B6A06 /* Account.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69F922C71087A008B6A06 /* Account.cpp */; }; - 21F69FA42C729400008B6A06 /* Record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69FA32C729400008B6A06 /* Record.cpp */; }; 21F69FA62C733EDA008B6A06 /* BridgeArgument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F69FA52C733EDA008B6A06 /* BridgeArgument.cpp */; }; 21F93AEC2B2F406E009A2C5B /* Addon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F93AEA2B2F406D009A2C5B /* Addon.cpp */; }; /* End PBXBuildFile section */ @@ -100,7 +105,6 @@ 219351982C6278D900E5A69C /* SelectionSubscriber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectionSubscriber.h; sourceTree = ""; }; 219351992C6278D900E5A69C /* SelectionSubscriber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectionSubscriber.cpp; sourceTree = ""; }; 2193519C2C627E3100E5A69C /* SelectionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectionEvent.h; sourceTree = ""; }; - 219351A72C62CA5300E5A69C /* Index.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Index.h; sourceTree = ""; }; 219351AC2C62CC1A00E5A69C /* Guid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Guid.cpp; sourceTree = ""; }; 219351AD2C62CC1A00E5A69C /* Guid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Guid.h; sourceTree = ""; }; 219351AE2C62CC1A00E5A69C /* String.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = String.cpp; sourceTree = ""; }; @@ -109,8 +113,13 @@ 21B67CFE2C7CE15100FD64FC /* Exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Exception.h; sourceTree = ""; }; 21B67D092C7E0E8D00FD64FC /* ErrorReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorReport.h; sourceTree = ""; }; 21B67D0C2C7E0E8D00FD64FC /* ErrorReport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ErrorReport.cpp; sourceTree = ""; }; - 21F69EBC2C63944D008B6A06 /* Link.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Link.h; sourceTree = ""; }; - 21F69EBD2C63C954008B6A06 /* Link.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Link.cpp; sourceTree = ""; }; + 21D0BD1D2C86F0280077E104 /* AccountDBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccountDBase.cpp; sourceTree = ""; }; + 21D0BD1E2C86F0280077E104 /* AccountDBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccountDBase.h; sourceTree = ""; }; + 21D0BD252C86FC350077E104 /* Record.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Record.cpp; sourceTree = ""; }; + 21D0BD262C86FC350077E104 /* Record.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Record.h; sourceTree = ""; }; + 21D0BD2D2C86FE090077E104 /* Index.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Index.h; sourceTree = ""; }; + 21D0BD2E2C86FE090077E104 /* Link.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Link.cpp; sourceTree = ""; }; + 21D0BD2F2C86FE090077E104 /* Link.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Link.h; sourceTree = ""; }; 21F69F012C66C229008B6A06 /* Doxyfile */ = {isa = PBXFileReference; lastKnownFileType = text; name = Doxyfile; path = Documentation/Doxyfile; sourceTree = ""; }; 21F69F192C6A0FE2008B6A06 /* JSBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBinding.h; sourceTree = ""; }; 21F69F352C6AA9B3008B6A06 /* JSFunction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSFunction.h; sourceTree = ""; }; @@ -134,10 +143,8 @@ 21F69F7D2C6FD9FC008B6A06 /* GetCallResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GetCallResult.h; sourceTree = ""; }; 21F69F802C6FF3B0008B6A06 /* BridgeArgumentWrap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BridgeArgumentWrap.cpp; sourceTree = ""; }; 21F69F822C701A8E008B6A06 /* BridgeMethodBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BridgeMethodBase.h; sourceTree = ""; }; - 21F69F8F2C710012008B6A06 /* Record.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Record.h; sourceTree = ""; }; 21F69F922C71087A008B6A06 /* Account.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Account.cpp; sourceTree = ""; }; 21F69F932C71087A008B6A06 /* Account.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Account.h; sourceTree = ""; }; - 21F69FA32C729400008B6A06 /* Record.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Record.cpp; sourceTree = ""; }; 21F69FA52C733EDA008B6A06 /* BridgeArgument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BridgeArgument.cpp; sourceTree = ""; }; 21F93AE92B2F406D009A2C5B /* Addon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Addon.h; sourceTree = ""; }; 21F93AEA2B2F406D009A2C5B /* Addon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Addon.cpp; sourceTree = ""; }; @@ -166,7 +173,7 @@ isa = PBXGroup; children = ( 214EA4C52BA374FD008E5358 /* CMakeLists.txt */, - 219351A92C62CA5300E5A69C /* Database */, + 21D0BD1F2C86F0280077E104 /* Database */, 21F93AE82B2F406D009A2C5B /* Environment */, 21F93ACC2B2B67FC009A2C5B /* Event */, 21F69F1B2C6A0FE2008B6A06 /* Interface */, @@ -246,26 +253,6 @@ path = Type; sourceTree = ""; }; - 219351A82C62CA5300E5A69C /* Content */ = { - isa = PBXGroup; - children = ( - 219351A72C62CA5300E5A69C /* Index.h */, - 21F69EBD2C63C954008B6A06 /* Link.cpp */, - 21F69EBC2C63944D008B6A06 /* Link.h */, - 21F69FA32C729400008B6A06 /* Record.cpp */, - 21F69F8F2C710012008B6A06 /* Record.h */, - ); - path = Content; - sourceTree = ""; - }; - 219351A92C62CA5300E5A69C /* Database */ = { - isa = PBXGroup; - children = ( - 219351A82C62CA5300E5A69C /* Content */, - ); - path = Database; - sourceTree = ""; - }; 219351B02C62CC1A00E5A69C /* Utility */ = { isa = PBXGroup; children = ( @@ -289,6 +276,36 @@ path = SpeckleLibDoctest; sourceTree = ""; }; + 21D0BD1F2C86F0280077E104 /* Database */ = { + isa = PBXGroup; + children = ( + 21D0BD1D2C86F0280077E104 /* AccountDBase.cpp */, + 21D0BD1E2C86F0280077E104 /* AccountDBase.h */, + 21D0BD302C86FE090077E104 /* Identity */, + 21D0BD272C86FC350077E104 /* Content */, + ); + path = Database; + sourceTree = ""; + }; + 21D0BD272C86FC350077E104 /* Content */ = { + isa = PBXGroup; + children = ( + 21D0BD252C86FC350077E104 /* Record.cpp */, + 21D0BD262C86FC350077E104 /* Record.h */, + ); + path = Content; + sourceTree = ""; + }; + 21D0BD302C86FE090077E104 /* Identity */ = { + isa = PBXGroup; + children = ( + 21D0BD2D2C86FE090077E104 /* Index.h */, + 21D0BD2E2C86FE090077E104 /* Link.cpp */, + 21D0BD2F2C86FE090077E104 /* Link.h */, + ); + path = Identity; + sourceTree = ""; + }; 21F69F1A2C6A0FE2008B6A06 /* Browser */ = { isa = PBXGroup; children = ( @@ -402,13 +419,17 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 21D0BD212C86F0280077E104 /* AccountDBase.h in Headers */, 210CC86F2C7E879700610F58 /* ArgumentBase.h in Headers */, 210CC8A02C81E34400610F58 /* Platform.h in Headers */, 21B67D0D2C7E0E8D00FD64FC /* ErrorReport.h in Headers */, + 21D0BD332C86FE090077E104 /* Link.h in Headers */, 210CC88F2C81A98500610F58 /* Guid64.h in Headers */, 21B67D002C7CE15100FD64FC /* Exception.h in Headers */, + 21D0BD2C2C86FC350077E104 /* Record.h in Headers */, 210CC8802C80CD2A00610F58 /* BridgeChild.h in Headers */, 2193518C2C62655700E5A69C /* MenuEvent.h in Headers */, + 21D0BD312C86FE090077E104 /* Index.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -542,14 +563,15 @@ 21B67D0E2C7E0E8D00FD64FC /* ErrorReport.cpp in Sources */, 21F69F7E2C6FD9FC008B6A06 /* GetCallResult.cpp in Sources */, 2193519B2C6278D900E5A69C /* SelectionSubscriber.cpp in Sources */, + 21D0BD2B2C86FC350077E104 /* Record.cpp in Sources */, 210CC8902C81A98500610F58 /* Guid64.cpp in Sources */, - 21F69EBE2C63C954008B6A06 /* Link.cpp in Sources */, + 21D0BD322C86FE090077E104 /* Link.cpp in Sources */, 219351B32C62CC1A00E5A69C /* String.cpp in Sources */, 219351B12C62CC1A00E5A69C /* Guid.cpp in Sources */, - 21F69FA42C729400008B6A06 /* Record.cpp in Sources */, 21F69F512C6CCC25008B6A06 /* BrowserBridge.cpp in Sources */, 21F69F3B2C6B880C008B6A06 /* JSBaseTransport.cpp in Sources */, 210CC89F2C81E34400610F58 /* Platform.cpp in Sources */, + 21D0BD202C86F0280077E104 /* AccountDBase.cpp in Sources */, 21F69F962C71087A008B6A06 /* Account.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0;