Source code for binaryninja.collaboration.changeset


import ctypes
from typing import List

from .. import _binaryninjacore as core
from ..database import Database
from . import file, user, util


[docs] class Changeset: """ Class representing a collection of snapshots in a local database """ def __init__(self, handle: core.BNCollaborationChangesetHandle): """ :param handle: FFI handle for internal use """ self._handle = ctypes.cast(handle, core.BNCollaborationChangesetHandle) def __del__(self): if core is not None: core.BNFreeCollaborationChangeset(self._handle) @property def database(self) -> 'Database': """ Owning database for snapshots :return: Database object """ value = core.BNCollaborationChangesetGetDatabase(self._handle) if value is None: raise RuntimeError(util._last_error()) result = Database(handle=value) return result @property def file(self) -> 'file.RemoteFile': """ Relevant remote File object :return: File object """ value = core.BNCollaborationChangesetGetFile(self._handle) if value is None: raise RuntimeError(util._last_error()) return file.RemoteFile(handle=value) @property def snapshot_ids(self) -> List[int]: """ List of snapshot ids in the database :return: Snapshot id list """ count = ctypes.c_size_t() snapshot_ids = core.BNCollaborationChangesetGetSnapshotIds(self._handle, count) if snapshot_ids is None: raise RuntimeError(util._last_error()) result = [] for i in range(count.value): result.append(snapshot_ids[i]) core.BNCollaborationFreeSnapshotIdList(snapshot_ids, count.value) return result @property def author(self) -> 'user.User': """ Relevant remote author User :return: Author User """ value = core.BNCollaborationChangesetGetAuthor(self._handle) if value is None: raise RuntimeError(util._last_error()) return user.User(handle=value) @property def name(self) -> str: """ Changeset name :return: Name string """ return core.BNCollaborationChangesetGetName(self._handle) @name.setter def name(self, name: str): """ Set the name of the changeset, e.g. in a name changeset function. :param name: New changeset name """ core.BNCollaborationChangesetSetName(self._handle, name)