diff options
| author | Mason Reed <35282038+emesare@users.noreply.github.com> | 2026-02-22 20:40:28 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-22 20:40:28 -0800 |
| commit | 017349bdbe171c66974a5835f2f74f76138386ea (patch) | |
| tree | 2e81f92e683f4b1d12c129360c788e0e52217d82 /plugins/warp/api | |
| parent | e2e420c91147f2a83cf59b37c973f57e209ef67a (diff) | |
[WARP] Allow containers to be constructed programmatically (#7952)
Diffstat (limited to 'plugins/warp/api')
| -rw-r--r-- | plugins/warp/api/python/warp.py | 7 | ||||
| -rw-r--r-- | plugins/warp/api/warp.cpp | 8 | ||||
| -rw-r--r-- | plugins/warp/api/warp.h | 3 | ||||
| -rw-r--r-- | plugins/warp/api/warpcore.h | 1 |
4 files changed, 19 insertions, 0 deletions
diff --git a/plugins/warp/api/python/warp.py b/plugins/warp/api/python/warp.py index fc487a4d..a699ebbc 100644 --- a/plugins/warp/api/python/warp.py +++ b/plugins/warp/api/python/warp.py @@ -351,6 +351,13 @@ class WarpContainer(metaclass=_WarpContainerMetaclass): return result @staticmethod + def add(name: str) -> 'WarpContainer': + container = warpcore.BNWARPAddContainer(name) + if container is None: + raise ValueError(f"Failed to add container: {name}") + return WarpContainer(container) + + @staticmethod def by_name(name: str) -> Optional['WarpContainer']: for container in WarpContainer: if container.name == name: diff --git a/plugins/warp/api/warp.cpp b/plugins/warp/api/warp.cpp index f6106605..c051e3c7 100644 --- a/plugins/warp/api/warp.cpp +++ b/plugins/warp/api/warp.cpp @@ -246,6 +246,14 @@ std::vector<Ref<Container> > Container::All() return result; } +Ref<Container> Container::Add(const std::string &name) +{ + BNWARPContainer *result = BNWARPAddContainer(name.c_str()); + if (!result) + return nullptr; + return new Container(result); +} + std::string Container::GetName() const { char *rawName = BNWARPContainerGetName(m_object); diff --git a/plugins/warp/api/warp.h b/plugins/warp/api/warp.h index 14be9a0d..01f4aaee 100644 --- a/plugins/warp/api/warp.h +++ b/plugins/warp/api/warp.h @@ -381,6 +381,9 @@ namespace Warp { /// Retrieve all available containers. static std::vector<Ref<Container> > All(); + /// Add a new container with the given name. + static Ref<Container> Add(const std::string &name); + std::string GetName() const; std::vector<Source> GetSources() const; diff --git a/plugins/warp/api/warpcore.h b/plugins/warp/api/warpcore.h index 633ffcbf..c52485aa 100644 --- a/plugins/warp/api/warpcore.h +++ b/plugins/warp/api/warpcore.h @@ -111,6 +111,7 @@ extern "C" WARP_FFI_API BNWARPFunction* BNWARPGetFunction(BNFunction* analysisFunction); WARP_FFI_API BNWARPFunction* BNWARPGetMatchedFunction(BNFunction* analysisFunction); WARP_FFI_API BNWARPContainer** BNWARPGetContainers(size_t* count); + WARP_FFI_API BNWARPContainer* BNWARPAddContainer(const char* name); WARP_FFI_API char* BNWARPContainerGetName(BNWARPContainer* container); |
