16 inline HandleGuard<GenApi::NodeMapEnumerator>::HandleGuard(
void* handle) noexcept
17 : HandleGuard<GenApi::NodeMapEnumerator>(handle, [](
void* handle) { CVB_CALL_CAPI(ReleaseObject(handle)); })
42 : handle_(std::move(guard))
56 : nodeMaps_(std::move_if_noexcept(other.nodeMaps_)),
57 handle_(std::move(other.handle_))
70 nodeMaps_ = std::move_if_noexcept(other.nodeMaps_);
71 handle_ = std::move(other.handle_);
90 CVB_CALL_CAPI_CHECKED(ShareObject(
object.
Handle()));
103 return handle_.Handle();
116 auto nodeMapCount = NodeMapCount();
117 names.reserve(nodeMapCount);
118 std::generate_n(std::back_inserter(names), nodeMapCount, [
this, i = 0]()
mutable {
119 return NameAt(i++); });
146 auto iter = nodeMaps_.find(name);
147 if (iter != nodeMaps_.end())
149 if (
auto nodeMap = iter->second.lock())
153 CExports::NODEMAP handle =
nullptr;
155 CVB_CALL_CAPI_CHECKED(NMH2GetNodeMap(
Handle(), cname.c_str(), handle));
158 nodeMaps_[name] = nodeMap;
164 int NodeMapCount() const noexcept
166 size_t numNodeMaps = 0;
167 CExports::NMH2GetNum(
Handle(), numNodeMaps);
168 return static_cast<int>(numNodeMaps);
171 String NameAt(
int index)
const
173 size_t bufferSize = 0;
174 CVB_CALL_CAPI_CHECKED(NMH2GetID(
Handle(), index,
nullptr, bufferSize));
177 CVB_CALL_CAPI_CHECKED(NMH2GetID(
Handle(), index, buffer.data(), bufferSize));
179 return String(buffer.begin(), buffer.end() - 1);
184 HandleGuard<NodeMapEnumerator> handle_;
Lazy enumeration of node maps.
Definition: node_map_enumerator.hpp:31
NodeMapPtr operator[](const String &name) const
Name based node map access.
Definition: node_map_enumerator.hpp:131
NodeMapEnumerator & operator=(NodeMapEnumerator &&other) noexcept
Move operator.
Definition: node_map_enumerator.hpp:67
static NodeMapEnumerator FromObject(const T &object)
Create a node map enumerator for a given object.
Definition: node_map_enumerator.hpp:88
NodeMapEnumerator(NodeMapEnumerator &&other) noexcept
Move constructor.
Definition: node_map_enumerator.hpp:55
NodeMapPtr NodeMap(const String &name) const
Name based node map access.
Definition: node_map_enumerator.hpp:144
std::vector< String > Names() const
Get the names of all available node maps.
Definition: node_map_enumerator.hpp:113
void * Handle() const noexcept
Classic API device handle.
Definition: node_map_enumerator.hpp:101
static NodeMapPtr FromHandle(HandleGuard< NodeMap > &&guard, const String &name, const Device &device)
Creates a node map from a classic API handle.
Definition: detail_node_map.hpp:27
Root namespace for the Image Manager interface.
Definition: c_barcode.h:24