| Classes | |
| class | AnalysisMergeConflict | 
| class | CollabChangeset | 
| class | CollabGroup | 
| class | CollabPermission | 
| class | CollabSnapshot | 
| class | CollabUndoEntry | 
| class | CollabUser | 
| struct | DatabaseConflictHandlerContext | 
| struct | NameChangesetContext | 
| class | Remote | 
| struct | RemoteException | 
| class | RemoteFile | 
| class | RemoteFolder | 
| class | RemoteProject | 
| struct | SyncException | 
| struct | TypeArchiveConflictHandlerContext | 
| class | TypeArchiveMergeConflict | 
| Typedefs | |
| typedef std::function< bool(Ref< CollabChangeset >)> | NameChangesetFunction | 
| typedef std::function< bool(const std::unordered_map< std::string, Ref< AnalysisMergeConflict > > &conflicts)> | AnalysisConflictHandler | 
| typedef std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > > &conflicts)> | TypeArchiveConflictHandler | 
| Functions | |
| bool | DatabaseConflictHandlerCallback (void *ctxt, const char **keys, BNAnalysisMergeConflict **conflicts, size_t count) | 
| bool | TypeArchiveConflictHandlerCallback (void *ctxt, BNTypeArchiveMergeConflict **conflicts, size_t count) | 
| bool | NameChangesetCallback (void *ctxt, BNCollaborationChangeset *changeset) | 
| template<> | |
| std::any | AnalysisMergeConflict::GetPathItem< std::any > (const std::string &path) | 
| template<> | |
| std::string | AnalysisMergeConflict::GetPathItem< std::string > (const std::string &path) | 
| template<> | |
| nlohmann::json | AnalysisMergeConflict::GetPathItem< nlohmann::json > (const std::string &path) | 
| Ref< Remote > | GetActiveRemote () | 
| void | SetActiveRemote (Ref< Remote > remote) | 
| bool | StoreDataInKeychain (const std::string &key, const std::map< std::string, std::string > &data) | 
| bool | HasDataInKeychain (const std::string &key) | 
| std::optional< std::map< std::string, std::string > > | GetDataFromKeychain (const std::string &key) | 
| bool | DeleteDataFromKeychain (const std::string &key) | 
| void | LoadRemotes () | 
| std::vector< Ref< Remote > > | GetRemotes () | 
| Ref< Remote > | GetRemoteById (const std::string &remoteId) | 
| Ref< Remote > | GetRemoteByAddress (const std::string &remoteAddress) | 
| Ref< Remote > | GetRemoteByName (const std::string &name) | 
| Ref< Remote > | CreateRemote (const std::string &name, const std::string &address) | 
| void | RemoveRemote (const Ref< Remote > &remote) | 
| void | SyncDatabase (Ref< Database > database, Ref< RemoteFile > file, AnalysisConflictHandler conflictHandler, ProgressFunction progress={}, NameChangesetFunction nameChangeset=[](Ref< CollabChangeset >){ return true;}) | 
| Completely sync a database, pushing/pulling/merging/applying changes. | |
| void | SyncTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, TypeArchiveConflictHandler conflictHandler, ProgressFunction progress={}) | 
| Completely sync a type archive, pushing/pulling/merging/applying changes. | |
| Ref< Snapshot > | MergeSnapshots (Ref< Snapshot > first, Ref< Snapshot > second, AnalysisConflictHandler conflictHandler, ProgressFunction progress) | 
| Merge a pair of snapshots and create a new snapshot with the result. | |
| std::string | DefaultProjectPath (Ref< RemoteProject > project) | 
| Get the default directory path for a remote Project. | |
| std::string | DefaultFilePath (Ref< RemoteFile > file) | 
| Get the default filepath for a remote File. | |
| Ref< FileMetadata > | DownloadFile (Ref< RemoteFile > file, const std::string &dbPath, ProgressFunction progress={}) | 
| Download a file from its remote, saving all snapshots to a database in the specified location. | |
| void | AssignSnapshotMap (Ref< Snapshot > localSnapshot, Ref< CollabSnapshot > remoteSnapshot) | 
| Add a snapshot to the id map in a database. | |
| Ref< RemoteFile > | UploadDatabase (Ref< FileMetadata > metadata, Ref< RemoteProject > project, Ref< RemoteFolder > folder, ProgressFunction progress, NameChangesetFunction nameChangeset={}) | 
| Upload a file, with database, to the remote under the given project. | |
| std::optional< std::string > | GetSnapshotAuthor (Ref< Database > database, Ref< Snapshot > snapshot) | 
| Get the remote author of a local snapshot. | |
| bool | IsCollaborationDatabase (Ref< Database > database) | 
| Test if a database is valid for use in collaboration. | |
| Ref< Remote > | GetRemoteForLocalDatabase (Ref< Database > database) | 
| Get the Remote for a Database. | |
| Ref< RemoteProject > | GetRemoteProjectForLocalDatabase (Ref< Database > database) | 
| Get the Remote Project for a Database. | |
| Ref< RemoteFile > | GetRemoteFileForLocalDatabase (Ref< Database > database) | 
| Get the Remote File for a Database. | |
| size_t | PullDatabase (Ref< Database > database, Ref< RemoteFile > file, AnalysisConflictHandler conflictHandler, ProgressFunction progress={}, NameChangesetFunction nameChangeset={}) | 
| Pull updated snapshots from the remote. | |
| void | MergeDatabase (Ref< Database > database, AnalysisConflictHandler conflictHandler, ProgressFunction progress={}) | 
| Merge all leaf snapshots in a database down to a single leaf snapshot. | |
| size_t | PushDatabase (Ref< Database > database, Ref< RemoteFile > file, ProgressFunction progress={}) | 
| Push locally added snapshots to the remote. | |
| void | DumpDatabase (Ref< Database > database) | 
| Print debug information about a database to stdout. | |
| void | IgnoreSnapshot (Ref< Database > database, Ref< Snapshot > snapshot) | 
| Ignore a snapshot from database syncing operations TODO: This is in place of deleting differential snapshots (which is unimplemented) | |
| bool | IsSnapshotIgnored (Ref< Database > database, Ref< Snapshot > snapshot) | 
| Test if a snapshot is ignored from the database TODO: This is in place of deleting differential snapshots (which is unimplemented) | |
| Ref< CollabSnapshot > | GetRemoteSnapshotFromLocal (Ref< Snapshot > snapshot) | 
| Get the remote snapshot associated with a local snapshot (if it exists) | |
| Ref< Snapshot > | GetLocalSnapshotFromRemote (Ref< CollabSnapshot > snapshot, Ref< Database > database) | 
| Get the local snapshot associated with a remote snapshot (if it exists) | |
| bool | IsCollaborationTypeArchive (Ref< TypeArchive > archive) | 
| Test if a type archive is valid for use in collaboration. | |
| Ref< Remote > | GetRemoteForLocalTypeArchive (Ref< TypeArchive > archive) | 
| Get the Remote for a Type Archive. | |
| Ref< RemoteProject > | GetRemoteProjectForLocalTypeArchive (Ref< TypeArchive > archive) | 
| Get the Remote Project for a Type Archive. | |
| Ref< RemoteFile > | GetRemoteFileForLocalTypeArchive (Ref< TypeArchive > archive) | 
| Get the Remote File for a Type Archive. | |
| Ref< CollabSnapshot > | GetRemoteSnapshotFromLocalTypeArchive (Ref< TypeArchive > archive, const std::string &snapshotId) | 
| Get the remote snapshot associated with a local snapshot (if it exists) in a Type Archive. | |
| std::optional< std::string > | GetLocalSnapshotFromRemoteTypeArchive (Ref< CollabSnapshot > snapshot, Ref< TypeArchive > archive) | 
| Get the local snapshot associated with a remote snapshot (if it exists) in a Type Archive. | |
| bool | IsTypeArchiveSnapshotIgnored (Ref< TypeArchive > archive, const std::string &snapshot) | 
| Test if a snapshot is ignored from the archive. | |
| Ref< TypeArchive > | DownloadTypeArchive (Ref< RemoteFile > file, const std::string &dbPath, ProgressFunction progress={}) | 
| Download a type archive from its remote, saving all snapshots to an archive in the specified location. | |
| Ref< RemoteFile > | UploadTypeArchive (Ref< TypeArchive > archive, Ref< RemoteProject > project, Ref< RemoteFolder > folder=nullptr, ProgressFunction progress={}, Ref< ProjectFile > coreFile=nullptr) | 
| Upload a type archive. | |
| size_t | PushTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, ProgressFunction progress={}) | 
| Push locally added snapshots to the remote. | |
| size_t | PullTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > >)> conflictHandler, ProgressFunction progress={}) | 
| Pull updated snapshots from the remote. | |
| void | DownloadDatabaseForFile (Ref< RemoteFile > file, const std::string &dbPath, bool force, ProgressFunction progress={}) | 
| void | SetSnapshotAuthor (Ref< Database > database, Ref< Snapshot > snapshot, const std::string &author) | 
| Set the remote author of a local snapshot (does not upload) | |
| struct BinaryNinja::Collaboration::DatabaseConflictHandlerContext | 
| Class Members | ||
|---|---|---|
| function< bool(const unordered_map< string, Ref< AnalysisMergeConflict > >)> | callback | |
| struct BinaryNinja::Collaboration::NameChangesetContext | 
| Class Members | ||
|---|---|---|
| function< bool(Ref< CollabChangeset >)> | callback | |
| struct BinaryNinja::Collaboration::TypeArchiveConflictHandlerContext | 
| Class Members | ||
|---|---|---|
| function< bool(const vector< Ref< TypeArchiveMergeConflict > >)> | callback | |
| typedef std::function<bool(Ref<CollabChangeset>)> BinaryNinja::Collaboration::NameChangesetFunction | 
| typedef std::function<bool(const std::unordered_map<std::string, Ref<AnalysisMergeConflict>>& conflicts)> BinaryNinja::Collaboration::AnalysisConflictHandler | 
| typedef std::function<bool(const std::vector<Ref<TypeArchiveMergeConflict>>& conflicts)> BinaryNinja::Collaboration::TypeArchiveConflictHandler | 
| bool BinaryNinja::Collaboration::DatabaseConflictHandlerCallback | ( | void * | ctxt, | 
| const char ** | keys, | ||
| BNAnalysisMergeConflict ** | conflicts, | ||
| size_t | count ) | 
| bool BinaryNinja::Collaboration::TypeArchiveConflictHandlerCallback | ( | void * | ctxt, | 
| BNTypeArchiveMergeConflict ** | conflicts, | ||
| size_t | count ) | 
| bool BinaryNinja::Collaboration::NameChangesetCallback | ( | void * | ctxt, | 
| BNCollaborationChangeset * | changeset ) | 
| std::any BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< std::any > | ( | const std::string & | path | ) | 
| std::string BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< std::string > | ( | const std::string & | path | ) | 
| nlohmann::json BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< nlohmann::json > | ( | const std::string & | path | ) | 
| bool BinaryNinja::Collaboration::StoreDataInKeychain | ( | const std::string & | key, | 
| const std::map< std::string, std::string > & | data ) | 
| bool BinaryNinja::Collaboration::HasDataInKeychain | ( | const std::string & | key | ) | 
| std::optional< std::map< std::string, std::string > > BinaryNinja::Collaboration::GetDataFromKeychain | ( | const std::string & | key | ) | 
| bool BinaryNinja::Collaboration::DeleteDataFromKeychain | ( | const std::string & | key | ) | 
| void BinaryNinja::Collaboration::LoadRemotes | ( | ) | 
| Ref< Remote > BinaryNinja::Collaboration::CreateRemote | ( | const std::string & | name, | 
| const std::string & | address ) | 
| void BinaryNinja::Collaboration::SyncDatabase | ( | Ref< Database > | database, | 
| Ref< RemoteFile > | file, | ||
| AnalysisConflictHandler | conflictHandler, | ||
| ProgressFunction | progress = {}, | ||
| NameChangesetFunction | nameChangeset = [](Ref< CollabChangeset >){ return true;} ) | 
Completely sync a database, pushing/pulling/merging/applying changes.
| database | Database to sync | 
| file | Remote File to sync with | 
| conflictHandler | Function to call to resolve snapshot conflicts | 
| progress | Function to call for progress updates | 
| nameChangeset | Function to call for naming a pushed changeset, if necessary | 
| SyncException | If there is an error syncing | 
| void BinaryNinja::Collaboration::SyncTypeArchive | ( | Ref< TypeArchive > | archive, | 
| Ref< RemoteFile > | file, | ||
| TypeArchiveConflictHandler | conflictHandler, | ||
| ProgressFunction | progress = {} ) | 
| Ref< Snapshot > BinaryNinja::Collaboration::MergeSnapshots | ( | Ref< Snapshot > | first, | 
| Ref< Snapshot > | second, | ||
| AnalysisConflictHandler | conflictHandler, | ||
| ProgressFunction | progress ) | 
Merge a pair of snapshots and create a new snapshot with the result.
| first | First snapshot to merge | 
| second | Second snapshot to merge | 
| conflictHandler | Function to call when merge conflicts are encountered | 
| progress | Function to call for progress updates and cancelling | 
| SyncException | If the snapshots have no common ancestor | 
| std::string BinaryNinja::Collaboration::DefaultProjectPath | ( | Ref< RemoteProject > | project | ) | 
| std::string BinaryNinja::Collaboration::DefaultFilePath | ( | Ref< RemoteFile > | file | ) | 
Get the default filepath for a remote File.
This is based off the Setting for collaboration.directory, the file's id, the file's project's id, and the file's remote's id.
| file | Remote File | 
| Ref< FileMetadata > BinaryNinja::Collaboration::DownloadFile | ( | Ref< RemoteFile > | file, | 
| const std::string & | dbPath, | ||
| ProgressFunction | progress = {} ) | 
Download a file from its remote, saving all snapshots to a database in the specified location.
Returns a FileContext for opening the file later.
| file | Remote File to download and open | 
| dbPath | File path for saved database | 
| progress | Function to call for progress updates | 
| SyncException | If there was an error downloading | 
| void BinaryNinja::Collaboration::AssignSnapshotMap | ( | Ref< Snapshot > | localSnapshot, | 
| Ref< CollabSnapshot > | remoteSnapshot ) | 
Add a snapshot to the id map in a database.
| localSnapshot | Local snapshot, will use this snapshot's database | 
| remoteSnapshot | Remote snapshot | 
| Ref< RemoteFile > BinaryNinja::Collaboration::UploadDatabase | ( | Ref< FileMetadata > | metadata, | 
| Ref< RemoteProject > | project, | ||
| Ref< RemoteFolder > | folder, | ||
| ProgressFunction | progress, | ||
| NameChangesetFunction | nameChangeset = {} ) | 
Upload a file, with database, to the remote under the given project.
| metadata | Local file with database | 
| project | Remote project under which to place the new file | 
| progress | Function to call for progress updates | 
| nameChangeset | Function to call for naming a pushed changeset, if necessary | 
| folderId | Id of folder that will contain the resulting file | 
| SyncException | If there was an error uploading | 
| std::optional< std::string > BinaryNinja::Collaboration::GetSnapshotAuthor | ( | Ref< Database > | database, | 
| Ref< Snapshot > | snapshot ) | 
Get the remote author of a local snapshot.
| database | Parent database | 
| snapshot | Snapshot to query | 
Test if a database is valid for use in collaboration.
| database | Database | 
| Ref< RemoteProject > BinaryNinja::Collaboration::GetRemoteProjectForLocalDatabase | ( | Ref< Database > | database | ) | 
| Ref< RemoteFile > BinaryNinja::Collaboration::GetRemoteFileForLocalDatabase | ( | Ref< Database > | database | ) | 
| size_t BinaryNinja::Collaboration::PullDatabase | ( | Ref< Database > | database, | 
| Ref< RemoteFile > | file, | ||
| AnalysisConflictHandler | conflictHandler, | ||
| ProgressFunction | progress = {}, | ||
| NameChangesetFunction | nameChangeset = {} ) | 
Pull updated snapshots from the remote.
Merge local changes with remote changes and potentially create a new snapshot for unsaved changes, named via nameChangeset.
| database | Database to pull | 
| file | Remote File to pull to | 
| conflictHandler | Function to call to resolve snapshot conflicts | 
| progress | Function to call for progress updates | 
| nameChangeset | Function to call for naming a pushed changeset, if necessary | 
| SyncException | If there is an error pulling | 
| void BinaryNinja::Collaboration::MergeDatabase | ( | Ref< Database > | database, | 
| AnalysisConflictHandler | conflictHandler, | ||
| ProgressFunction | progress = {} ) | 
Merge all leaf snapshots in a database down to a single leaf snapshot.
| database | Database to merge | 
| progress | Function to call for progress updates | 
| conflictHandler | Function to call to resolve snapshot conflicts | 
| SyncException | If there was an error merging | 
| size_t BinaryNinja::Collaboration::PushDatabase | ( | Ref< Database > | database, | 
| Ref< RemoteFile > | file, | ||
| ProgressFunction | progress = {} ) | 
Push locally added snapshots to the remote.
| database | Database to push | 
| file | Remote File to push to | 
| progress | Function to call for progress updates | 
| SyncException | If there is an error pushing | 
Print debug information about a database to stdout.
| database | Database to dump | 
| void BinaryNinja::Collaboration::IgnoreSnapshot | ( | Ref< Database > | database, | 
| Ref< Snapshot > | snapshot ) | 
Ignore a snapshot from database syncing operations TODO: This is in place of deleting differential snapshots (which is unimplemented)
| database | Parent database | 
| snapshot | Snapshot to ignore | 
| bool BinaryNinja::Collaboration::IsSnapshotIgnored | ( | Ref< Database > | database, | 
| Ref< Snapshot > | snapshot ) | 
Test if a snapshot is ignored from the database TODO: This is in place of deleting differential snapshots (which is unimplemented)
| database | Parent database | 
| snapshot | Snapshot to test | 
| Ref< CollabSnapshot > BinaryNinja::Collaboration::GetRemoteSnapshotFromLocal | ( | Ref< Snapshot > | snapshot | ) | 
Get the remote snapshot associated with a local snapshot (if it exists)
| snapshot | Local snapshot | 
| bool BinaryNinja::Collaboration::IsCollaborationTypeArchive | ( | Ref< TypeArchive > | archive | ) | 
Test if a type archive is valid for use in collaboration.
| archive | Type archive | 
| Ref< Remote > BinaryNinja::Collaboration::GetRemoteForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) | 
| Ref< RemoteProject > BinaryNinja::Collaboration::GetRemoteProjectForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) | 
| Ref< RemoteFile > BinaryNinja::Collaboration::GetRemoteFileForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) | 
| Ref< CollabSnapshot > BinaryNinja::Collaboration::GetRemoteSnapshotFromLocalTypeArchive | ( | Ref< TypeArchive > | archive, | 
| const std::string & | snapshotId ) | 
| std::optional< std::string > BinaryNinja::Collaboration::GetLocalSnapshotFromRemoteTypeArchive | ( | Ref< CollabSnapshot > | snapshot, | 
| Ref< TypeArchive > | archive ) | 
| bool BinaryNinja::Collaboration::IsTypeArchiveSnapshotIgnored | ( | Ref< TypeArchive > | archive, | 
| const std::string & | snapshot ) | 
| Ref< TypeArchive > BinaryNinja::Collaboration::DownloadTypeArchive | ( | Ref< RemoteFile > | file, | 
| const std::string & | dbPath, | ||
| ProgressFunction | progress = {} ) | 
Download a type archive from its remote, saving all snapshots to an archive in the specified location.
Returns a Ref<TypeArchive> for using later.
| file | Remote Type Archive file to download and open | 
| dbPath | File path for saved archive | 
| progress | Function to call for progress updates | 
| SyncException | If there was an error downloading | 
| Ref< RemoteFile > BinaryNinja::Collaboration::UploadTypeArchive | ( | Ref< TypeArchive > | archive, | 
| Ref< RemoteProject > | project, | ||
| Ref< RemoteFolder > | folder = nullptr, | ||
| ProgressFunction | progress = {}, | ||
| Ref< ProjectFile > | coreFile = nullptr ) | 
Upload a type archive.
| archive | Type archive | 
| project | Containing project | 
| folder | Containing folder | 
| progress | Function to call for progress updates | 
| coreFile | Core ProjectFile structure, if archive is in a project | 
| size_t BinaryNinja::Collaboration::PushTypeArchive | ( | Ref< TypeArchive > | archive, | 
| Ref< RemoteFile > | file, | ||
| ProgressFunction | progress = {} ) | 
Push locally added snapshots to the remote.
| archive | Type Archive to push | 
| file | Remote File to push to | 
| progress | Function to call for progress updates | 
| SyncException | If there is an error pushing | 
| size_t BinaryNinja::Collaboration::PullTypeArchive | ( | Ref< TypeArchive > | archive, | 
| Ref< RemoteFile > | file, | ||
| std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > >)> | conflictHandler, | ||
| ProgressFunction | progress = {} ) | 
Pull updated snapshots from the remote.
Merge local changes with remote changes and potentially create a new snapshot for unsaved changes, named via nameChangeset.
| archive | Type Archive to pull | 
| file | Remote File to pull to | 
| conflictHandler | Function to call to resolve snapshot conflicts | 
| progress | Function to call for progress updates | 
| nameChangeset | Function to call for naming a pushed changeset, if necessary | 
| SyncException | If there is an error pulling | 
| void BinaryNinja::Collaboration::DownloadDatabaseForFile | ( | Ref< RemoteFile > | file, | 
| const std::string & | dbPath, | ||
| bool | force, | ||
| ProgressFunction | progress = {} ) |