Skip to content

Commit 9926db6

Browse files
committed
WIP Friendship ended with plugin manager; extension manager new best friend
1 parent 4ba6142 commit 9926db6

20 files changed

+1411
-1131
lines changed

.doxygen.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146
\ingroup coreapi
147147
*/
148148
/*!
149-
\defgroup pluginmanager Plugin Manager
149+
\defgroup extensionmanager Extension Manager
150150
\ingroup coreapi
151151
*/
152152
/*!

api-docs/spelling.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ args
6969
bnpr
7070
bndb
7171
bnpm
72-
pluginmanager
72+
extensionmanager
7373
scriptingprovider
7474
globals
7575
cancelation

binaryninjaapi.cpp

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ void BinaryNinja::InitUserPlugins()
6161
}
6262

6363

64-
void BinaryNinja::InitRepoPlugins()
64+
void BinaryNinja::InitExtensions()
6565
{
66-
BNInitRepoPlugins();
66+
BNInitExtensions();
6767
}
6868

6969

@@ -106,17 +106,6 @@ string BinaryNinja::GetSettingsFileName()
106106
}
107107

108108

109-
string BinaryNinja::GetRepositoriesDirectory()
110-
{
111-
char* dir = BNGetRepositoriesDirectory();
112-
if (!dir)
113-
return string();
114-
string result(dir);
115-
BNFreeString(dir);
116-
return result;
117-
}
118-
119-
120109
string BinaryNinja::GetInstallDirectory()
121110
{
122111
char* path = BNGetInstallDirectory();

binaryninjaapi.h

Lines changed: 55 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1173,7 +1173,7 @@ namespace BinaryNinja {
11731173
\deprecated Use `InitPlugins()`
11741174
*/
11751175
void InitUserPlugins(); // Deprecated, use InitPlugins
1176-
void InitRepoPlugins();
1176+
void InitExtensions();
11771177

11781178
std::string GetBundledPluginDirectory();
11791179
void SetBundledPluginDirectory(const std::string& path);
@@ -16788,32 +16788,41 @@ namespace BinaryNinja {
1678816788
typedef BNPluginType PluginType;
1678916789

1679016790
/*!
16791-
\ingroup pluginmanager
16791+
* \ingroup extensionmanager
1679216792
*/
16793-
class RepoPlugin : public CoreRefCountObject<BNRepoPlugin, BNNewPluginReference, BNFreePlugin>
16793+
class ExtensionVersion : public CoreRefCountObject<BNExtensionVersion, BNNewExtensionVersionReference, BNFreeExtensionVersion>
1679416794
{
16795-
public:
16796-
RepoPlugin(BNRepoPlugin* plugin);
16795+
public:
16796+
ExtensionVersion(BNExtensionVersion* version);
16797+
std::string GetVersionString() const;
16798+
std::string GetLongDescription() const;
16799+
std::string GetChangelog() const;
16800+
BNVersionInfo GetMinimumVersionInfo() const;
16801+
BNVersionInfo GetMaximumVersionInfo() const;
16802+
std::string GetDependencies() const;
16803+
std::string GetDownloadUrl(bool useShortUrl = true) const;
16804+
bool InstallDependencies() const;
16805+
};
16806+
16807+
/*!
16808+
* \ingroup extensionmanager
16809+
*/
16810+
class Extension : public CoreRefCountObject<BNExtension, BNNewExtensionReference, BNFreeExtension>
16811+
{
16812+
public:
16813+
Extension(BNExtension* extension);
1679716814
PluginStatus GetPluginStatus() const;
16798-
std::vector<std::string> GetApis() const;
16799-
std::vector<std::string> GetInstallPlatforms() const;
1680016815
std::string GetPath() const;
16801-
std::string GetSubdir() const;
16802-
// std::string GetDependencies() const; // Change to GetMostRecentVersion()->GetDependencies()
16803-
// std::string GetPluginDirectory() const; // Change to GetMostRecentVersion()->GetPluginDirectory()
1680416816
std::string GetAuthor() const;
1680516817
std::string GetDescription() const;
16806-
// std::string GetLongdescription() const; // Change to GetMostRecentVersion()->GetLongDescription()
1680716818
std::string GetName() const;
1680816819
std::vector<PluginType> GetPluginTypes() const;
16809-
// std::string GetPackageUrl() const; // Change to GetMostRecentVersion()->GetPackageUrl()
1681016820
std::string GetProjectUrl() const;
16811-
// std::string GetVersion() const; // Meed to change to GetVersions generator object sorta thing
16812-
std::string GetRepository() const;
16813-
// BNVersionInfo GetMinimumVersionInfo() const; // Change to GetMostRecentVersion()->GetMinimumVersionInfo()
16814-
// BNVersionInfo GetMaximumVersionInfo() const; // Change to GetMostRecentVersion()->GetMaximumVersionInfo()
16815-
// uint64_t GetLastUpdate(); // Change to GetMostRecentVersion()->GetLastUpdate()
16816-
// bool IsViewOnly() const; // idk what I want to do about this I need to talk to josh about it again
16821+
std::string GetChannelName() const;
16822+
std::vector<Ref<ExtensionVersion>> GetVersions() const;
16823+
Ref<ExtensionVersion> GetCurrentVersion() const;
16824+
Ref<ExtensionVersion> GetLatestVersion() const;
16825+
std::vector<std::string> GetInstallPlatforms() const;
1681716826
bool IsBeingDeleted() const;
1681816827
bool IsBeingUpdated() const;
1681916828
bool IsInstalled() const;
@@ -16824,49 +16833,49 @@ namespace BinaryNinja {
1682416833
bool IsDeletePending() const;
1682516834
bool IsUpdateAvailable() const;
1682616835
bool AreDependenciesBeingInstalled() const;
16827-
1682816836
bool Uninstall();
16829-
// bool Install();
16830-
// bool InstallDependencies();
16831-
// `force` ignores optional checks for platform/api compliance
16832-
bool Enable(bool force);
16837+
bool Install(Ref<ExtensionVersion> version = nullptr);
16838+
bool InstallDependencies();
16839+
bool Enable();
1683316840
bool Disable();
16834-
bool Update();
16841+
bool Update(Ref<ExtensionVersion> version = nullptr);
1683516842
};
1683616843

1683716844
/*!
16838-
\ingroup pluginmanager
16845+
* \ingroup extensionmanager
1683916846
*/
16840-
class Repository : public CoreRefCountObject<BNRepository, BNNewRepositoryReference, BNFreeRepository>
16847+
class ExtensionChannel : public CoreRefCountObject<BNExtensionChannel, BNNewChannelReference, BNFreeChannel>
1684116848
{
16842-
public:
16843-
Repository(BNRepository* repository);
16849+
public:
16850+
ExtensionChannel(BNExtensionChannel* channel);
1684416851
std::string GetUrl() const;
16845-
std::string GetRepoPath() const;
16846-
std::string GetLocalReference() const;
16847-
std::string GetRemoteReference() const;
16848-
std::vector<Ref<RepoPlugin>> GetPlugins() const;
16849-
std::string GetPluginDirectory() const;
16850-
Ref<RepoPlugin> GetPluginByPath(const std::string& pluginPath);
16852+
std::string GetName() const;
16853+
bool IsUserChannel() const;
16854+
std::vector<Ref<Extension>> GetExtensions() const;
16855+
Ref<Extension> GetExtensionByPath(const std::string& extensionPath);
1685116856
std::string GetFullPath() const;
16857+
std::string GetExtensionTypePath(PluginType type) const;
1685216858
};
1685316859

1685416860
/*!
16855-
\ingroup pluginmanager
16861+
* \ingroup extensionmanager
1685616862
*/
16857-
class RepositoryManager :
16858-
public CoreRefCountObject<BNRepositoryManager, BNNewRepositoryManagerReference, BNFreeRepositoryManager>
16863+
class ExtensionManager :
16864+
public CoreRefCountObject<BNExtensionManager, BNNewExtensionManagerReference, BNFreeExtensionManager>
1685916865
{
16860-
public:
16861-
// RepositoryManager();
16862-
RepositoryManager(BNRepositoryManager* repoManager);
16863-
RepositoryManager();
16866+
public:
16867+
ExtensionManager(BNExtensionManager* manager);
16868+
ExtensionManager();
16869+
static ExtensionManager& Instance();
1686416870
bool CheckForUpdates();
16865-
std::vector<Ref<Repository>> GetRepositories();
16866-
Ref<Repository> GetRepositoryByPath(const std::string& repoName);
16867-
bool AddRepository(const std::string& url, // URL to raw plugins.json file
16868-
const std::string& repoPath); // Relative path within the repositories directory
16869-
Ref<Repository> GetDefaultRepository();
16871+
bool FetchChannelsAsync();
16872+
std::vector<Ref<ExtensionChannel>> GetChannels();
16873+
Ref<ExtensionChannel> GetChannelByName(const std::string& name);
16874+
bool AddChannel(const std::string& url,
16875+
const std::string& name,
16876+
bool isUserChannel = false);
16877+
Ref<ExtensionChannel> GetDefaultChannel();
16878+
std::string GetUserExtensionsDirectory() const;
1687016879
};
1687116880

1687216881
/*! \c Settings provides a way to define and access settings in a hierarchical fashion. The value of a setting can

binaryninjacore.h

Lines changed: 71 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,10 @@ extern "C"
253253
typedef struct BNScriptingInstance BNScriptingInstance;
254254
typedef struct BNMainThreadAction BNMainThreadAction;
255255
typedef struct BNBackgroundTask BNBackgroundTask;
256-
typedef struct BNRepository BNRepository;
257-
typedef struct BNRepoPlugin BNRepoPlugin;
258-
typedef struct BNRepositoryManager BNRepositoryManager;
256+
typedef struct BNExtensionManager BNExtensionManager;
257+
typedef struct BNExtensionChannel BNExtensionChannel;
258+
typedef struct BNExtension BNExtension;
259+
typedef struct BNExtensionVersion BNExtensionVersion;
259260
typedef struct BNComponent BNComponent;
260261
typedef struct BNSettings BNSettings;
261262
typedef struct BNMetadata BNMetadata;
@@ -3685,15 +3686,14 @@ extern "C"
36853686
BINARYNINJACOREAPI void BNDisablePlugins(void);
36863687
BINARYNINJACOREAPI bool BNIsPluginsEnabled(void);
36873688
BINARYNINJACOREAPI void BNInitUserPlugins(void); // Deprecated, use BNInitPlugins
3688-
BINARYNINJACOREAPI void BNInitRepoPlugins(void);
3689+
BINARYNINJACOREAPI void BNInitExtensions(void);
36893690
BINARYNINJACOREAPI void BNLoadPluginsInDirectory(const char*);
36903691

36913692
BINARYNINJACOREAPI char* BNGetInstallDirectory(void);
36923693
BINARYNINJACOREAPI char* BNGetBundledPluginDirectory(void);
36933694
BINARYNINJACOREAPI void BNSetBundledPluginDirectory(const char* path);
36943695
BINARYNINJACOREAPI char* BNGetUserDirectory(void);
36953696
BINARYNINJACOREAPI char* BNGetUserPluginDirectory(void);
3696-
BINARYNINJACOREAPI char* BNGetRepositoriesDirectory(void);
36973697
BINARYNINJACOREAPI char* BNGetSettingsFileName(void);
36983698
BINARYNINJACOREAPI void BNSaveLastRun(void);
36993699

@@ -7214,70 +7214,75 @@ extern "C"
72147214
BINARYNINJACOREAPI bool BNDemangleGeneric(BNArchitecture* arch, const char* name,
72157215
BNType** outType, BNQualifiedName* outVarName, BNBinaryView* view, bool simplify);
72167216

7217-
// Plugin repository APIs
7218-
// BINARYNINJACOREAPI char** BNPluginGetApis(BNRepoPlugin* p, size_t* count);
7219-
BINARYNINJACOREAPI const char* BNPluginGetAuthor(BNRepoPlugin* p);
7220-
BINARYNINJACOREAPI const char* BNPluginGetDescription(BNRepoPlugin* p);
7221-
// BINARYNINJACOREAPI const char* BNPluginGetLongdescription(BNRepoPlugin* p);
7222-
// BINARYNINJACOREAPI BNVersionInfo BNPluginGetMinimumVersionInfo(BNRepoPlugin* p);
7223-
// BINARYNINJACOREAPI BNVersionInfo BNPluginGetMaximumVersionInfo(BNRepoPlugin* p);
7217+
// Extension Version APIs
7218+
BINARYNINJACOREAPI const char* BNExtensionVersionGetVersionString(BNExtensionVersion* v);
7219+
BINARYNINJACOREAPI const char* BNExtensionVersionGetLongDescription(BNExtensionVersion* v);
7220+
BINARYNINJACOREAPI const char* BNExtensionVersionGetChangelog(BNExtensionVersion* v);
7221+
BINARYNINJACOREAPI BNVersionInfo BNExtensionVersionGetMinimumVersionInfo(BNExtensionVersion* v);
7222+
BINARYNINJACOREAPI BNVersionInfo BNExtensionVersionGetMaximumVersionInfo(BNExtensionVersion* v);
7223+
BINARYNINJACOREAPI const char* BNExtensionVersionGetDependencies(BNExtensionVersion* v);
7224+
BINARYNINJACOREAPI const char* BNExtensionVersionGetDownloadUrl(BNExtensionVersion* v, bool useShortUrl);
7225+
BINARYNINJACOREAPI bool BNExtensionVersionInstallDependencies(BNExtensionVersion* v);
7226+
BINARYNINJACOREAPI BNExtensionVersion* BNNewExtensionVersionReference(BNExtensionVersion* v);
7227+
BINARYNINJACOREAPI void BNFreeExtensionVersion(BNExtensionVersion* v);
7228+
7229+
// Extension APIs (formerly Plugin APIs)
7230+
BINARYNINJACOREAPI const char* BNExtensionGetAuthor(BNExtension* p);
7231+
BINARYNINJACOREAPI const char* BNExtensionGetDescription(BNExtension* p);
7232+
BINARYNINJACOREAPI const char* BNExtensionGetName(BNExtension* p);
7233+
BINARYNINJACOREAPI const char* BNExtensionGetProjectUrl(BNExtension* p);
72247234
BINARYNINJACOREAPI BNVersionInfo BNParseVersionString(const char* v);
72257235
BINARYNINJACOREAPI bool BNVersionLessThan(const BNVersionInfo smaller, const BNVersionInfo larger);
7226-
BINARYNINJACOREAPI const char* BNPluginGetName(BNRepoPlugin* p);
7227-
BINARYNINJACOREAPI const char* BNPluginGetProjectUrl(BNRepoPlugin* p);
7228-
// BINARYNINJACOREAPI const char* BNPluginGetPackageUrl(BNRepoPlugin* p);
7229-
// BINARYNINJACOREAPI const char* BNPluginGetVersions(BNRepoPlugin* p);
7230-
// BINARYNINJACOREAPI const bool BNPluginGetViewOnly(BNRepoPlugin* p);
7236+
BINARYNINJACOREAPI BNPluginType* BNExtensionGetPluginTypes(BNExtension* p, size_t* count);
72317237
BINARYNINJACOREAPI void BNFreePluginTypes(BNPluginType* r);
7232-
BINARYNINJACOREAPI BNRepoPlugin* BNNewPluginReference(BNRepoPlugin* r);
7233-
BINARYNINJACOREAPI void BNFreePlugin(BNRepoPlugin* plugin);
7234-
BINARYNINJACOREAPI const char* BNPluginGetPath(BNRepoPlugin* p);
7235-
// BINARYNINJACOREAPI const char* BNPluginGetSubdir(BNRepoPlugin* p);
7236-
// BINARYNINJACOREAPI const char* BNPluginGetDependencies(BNRepoPlugin* p);
7237-
BINARYNINJACOREAPI bool BNPluginIsInstalled(BNRepoPlugin* p);
7238-
BINARYNINJACOREAPI bool BNPluginIsEnabled(BNRepoPlugin* p);
7239-
BINARYNINJACOREAPI BNPluginStatus BNPluginGetPluginStatus(BNRepoPlugin* p);
7240-
BINARYNINJACOREAPI BNPluginType* BNPluginGetPluginTypes(BNRepoPlugin* p, size_t* count);
7241-
BINARYNINJACOREAPI bool BNPluginEnable(BNRepoPlugin* p, bool force);
7242-
BINARYNINJACOREAPI bool BNPluginDisable(BNRepoPlugin* p);
7243-
// BINARYNINJACOREAPI bool BNPluginInstall(BNRepoPlugin* p);
7244-
// BINARYNINJACOREAPI bool BNPluginInstallDependencies(BNRepoPlugin* p);
7245-
BINARYNINJACOREAPI bool BNPluginUninstall(BNRepoPlugin* p);
7246-
BINARYNINJACOREAPI bool BNPluginUpdate(BNRepoPlugin* p);
7247-
// BINARYNINJACOREAPI void BNFreePluginPlatforms(char** platforms, size_t count);
7248-
BINARYNINJACOREAPI const char* BNPluginGetRepository(BNRepoPlugin* p);
7249-
BINARYNINJACOREAPI bool BNPluginIsBeingDeleted(BNRepoPlugin* p);
7250-
BINARYNINJACOREAPI bool BNPluginIsBeingUpdated(BNRepoPlugin* p);
7251-
BINARYNINJACOREAPI bool BNPluginIsRunning(BNRepoPlugin* p);
7252-
BINARYNINJACOREAPI bool BNPluginIsUpdatePending(BNRepoPlugin* p);
7253-
BINARYNINJACOREAPI bool BNPluginIsDisablePending(BNRepoPlugin* p);
7254-
BINARYNINJACOREAPI bool BNPluginIsDeletePending(BNRepoPlugin* p);
7255-
BINARYNINJACOREAPI bool BNPluginIsUpdateAvailable(BNRepoPlugin* p);
7256-
BINARYNINJACOREAPI bool BNPluginAreDependenciesBeingInstalled(BNRepoPlugin* p);
7257-
7258-
// BINARYNINJACOREAPI uint64_t BNPluginGetLastUpdate(BNRepoPlugin* p);
7259-
7260-
BINARYNINJACOREAPI BNRepository* BNNewRepositoryReference(BNRepository* r);
7261-
BINARYNINJACOREAPI void BNFreeRepository(BNRepository* r);
7262-
BINARYNINJACOREAPI char* BNRepositoryGetUrl(BNRepository* r);
7263-
BINARYNINJACOREAPI char* BNRepositoryGetRepoPath(BNRepository* r);
7264-
BINARYNINJACOREAPI BNRepoPlugin** BNRepositoryGetPlugins(BNRepository* r, size_t* count);
7265-
BINARYNINJACOREAPI void BNFreeRepositoryPluginList(BNRepoPlugin** r);
7266-
BINARYNINJACOREAPI void BNRepositoryFreePluginDirectoryList(char** list, size_t count);
7267-
BINARYNINJACOREAPI BNRepoPlugin* BNRepositoryGetPluginByPath(BNRepository* r, const char* pluginPath);
7268-
BINARYNINJACOREAPI const char* BNRepositoryGetPluginsPath(BNRepository* r);
7269-
7270-
BINARYNINJACOREAPI BNRepositoryManager* BNNewRepositoryManagerReference(BNRepositoryManager* r);
7271-
BINARYNINJACOREAPI void BNFreeRepositoryManager(BNRepositoryManager* r);
7272-
BINARYNINJACOREAPI bool BNRepositoryManagerCheckForUpdates(BNRepositoryManager* r);
7273-
BINARYNINJACOREAPI BNRepository** BNRepositoryManagerGetRepositories(BNRepositoryManager* r, size_t* count);
7274-
BINARYNINJACOREAPI void BNFreeRepositoryManagerRepositoriesList(BNRepository** r);
7275-
BINARYNINJACOREAPI bool BNRepositoryManagerAddRepository(
7276-
BNRepositoryManager* r, const char* url, const char* repoPath);
7277-
BINARYNINJACOREAPI BNRepository* BNRepositoryGetRepositoryByPath(BNRepositoryManager* r, const char* repoPath);
7278-
BINARYNINJACOREAPI BNRepositoryManager* BNGetRepositoryManager(void);
7279-
7280-
BINARYNINJACOREAPI BNRepository* BNRepositoryManagerGetDefaultRepository(BNRepositoryManager* r);
7238+
BINARYNINJACOREAPI BNExtensionVersion** BNExtensionGetVersions(BNExtension* p, size_t* count);
7239+
BINARYNINJACOREAPI void BNFreeExtensionVersionList(BNExtensionVersion** v);
7240+
BINARYNINJACOREAPI BNExtensionVersion* BNExtensionGetCurrentVersion(BNExtension* p);
7241+
BINARYNINJACOREAPI BNExtensionVersion* BNExtensionGetLatestVersion(BNExtension* p);
7242+
BINARYNINJACOREAPI BNExtension* BNNewExtensionReference(BNExtension* p);
7243+
BINARYNINJACOREAPI void BNFreeExtension(BNExtension* plugin);
7244+
BINARYNINJACOREAPI const char* BNExtensionGetPath(BNExtension* p);
7245+
BINARYNINJACOREAPI const char* BNExtensionGetChannelName(BNExtension* p);
7246+
BINARYNINJACOREAPI bool BNExtensionIsInstalled(BNExtension* p);
7247+
BINARYNINJACOREAPI bool BNExtensionIsEnabled(BNExtension* p);
7248+
BINARYNINJACOREAPI BNPluginStatus BNExtensionGetPluginStatus(BNExtension* p);
7249+
BINARYNINJACOREAPI bool BNExtensionEnable(BNExtension* p);
7250+
BINARYNINJACOREAPI bool BNExtensionDisable(BNExtension* p);
7251+
BINARYNINJACOREAPI bool BNExtensionInstall(BNExtension* p, BNExtensionVersion* v);
7252+
BINARYNINJACOREAPI bool BNExtensionInstallDependencies(BNExtension* p);
7253+
BINARYNINJACOREAPI bool BNExtensionUninstall(BNExtension* p);
7254+
BINARYNINJACOREAPI bool BNExtensionUpdate(BNExtension* p, BNExtensionVersion* v);
7255+
BINARYNINJACOREAPI bool BNExtensionIsBeingDeleted(BNExtension* p);
7256+
BINARYNINJACOREAPI bool BNExtensionIsBeingUpdated(BNExtension* p);
7257+
BINARYNINJACOREAPI bool BNExtensionIsRunning(BNExtension* p);
7258+
BINARYNINJACOREAPI bool BNExtensionIsUpdatePending(BNExtension* p);
7259+
BINARYNINJACOREAPI bool BNExtensionIsDisablePending(BNExtension* p);
7260+
BINARYNINJACOREAPI bool BNExtensionIsDeletePending(BNExtension* p);
7261+
BINARYNINJACOREAPI bool BNExtensionIsUpdateAvailable(BNExtension* p);
7262+
BINARYNINJACOREAPI bool BNExtensionAreDependenciesBeingInstalled(BNExtension* p);
7263+
7264+
// Channel APIs (formerly Repository APIs)
7265+
BINARYNINJACOREAPI BNExtensionChannel* BNNewChannelReference(BNExtensionChannel* r);
7266+
BINARYNINJACOREAPI void BNFreeChannel(BNExtensionChannel* r);
7267+
BINARYNINJACOREAPI char* BNChannelGetUrl(BNExtensionChannel* r);
7268+
BINARYNINJACOREAPI char* BNChannelGetName(BNExtensionChannel* r);
7269+
BINARYNINJACOREAPI BNExtension** BNChannelGetExtensions(BNExtensionChannel* r, size_t* count);
7270+
BINARYNINJACOREAPI void BNFreeChannelExtensionList(BNExtension** r);
7271+
BINARYNINJACOREAPI BNExtension* BNChannelGetExtensionByPath(BNExtensionChannel* r, const char* extensionPath);
7272+
BINARYNINJACOREAPI const char* BNChannelGetFullPath(BNExtensionChannel* r);
7273+
7274+
// Extension Manager APIs (formerly Repository Manager APIs)
7275+
BINARYNINJACOREAPI BNExtensionManager* BNNewExtensionManagerReference(BNExtensionManager* r);
7276+
BINARYNINJACOREAPI void BNFreeExtensionManager(BNExtensionManager* r);
7277+
BINARYNINJACOREAPI BNExtensionManager* BNGetExtensionManager(void);
7278+
BINARYNINJACOREAPI bool BNExtensionManagerCheckForUpdates(BNExtensionManager* r);
7279+
BINARYNINJACOREAPI bool BNExtensionManagerFetchChannelsAsync(BNExtensionManager* r);
7280+
BINARYNINJACOREAPI BNExtensionChannel** BNExtensionManagerGetChannels(BNExtensionManager* r, size_t* count);
7281+
BINARYNINJACOREAPI void BNFreeExtensionManagerChannelsList(BNExtensionChannel** r);
7282+
BINARYNINJACOREAPI bool BNExtensionManagerAddChannel(
7283+
BNExtensionManager* r, const char* url, const char* name, bool isUserChannel);
7284+
BINARYNINJACOREAPI BNExtensionChannel* BNExtensionManagerGetChannelByName(BNExtensionManager* r, const char* name);
7285+
BINARYNINJACOREAPI BNExtensionChannel* BNExtensionManagerGetDefaultChannel(BNExtensionManager* r);
72817286

72827287
// Components
72837288

0 commit comments

Comments
 (0)