File NodeMap.h¶
File List > include > SpinGenApi > NodeMap.h
Go to the documentation of this file
//=============================================================================
// Copyright (c) 2026 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================
#ifndef SPINNAKER_GENAPI_NODEMAP_H
#define SPINNAKER_GENAPI_NODEMAP_H
#include "GCString.h"
#include "GCStringVector.h"
#include "Types.h"
#include "INodeMap.h"
#include "IDeviceInfo.h"
#include "Node.h"
#include "Container.h"
#include "Synch.h"
#include "ValueNode.h"
#include "EnumNodeT.h"
#include "EnumNode.h"
#include "EnumEntryNode.h"
#include "PortNode.h"
#include "IntegerNode.h"
#include "FloatNode.h"
#include "StringNode.h"
#include "BooleanNode.h"
#include "Pointer.h"
#include <map>
#include <memory>
#include <atomic>
#include <cstdint>
#ifdef _WIN32
#pragma warning(push)
#pragma warning(disable : 4251) // XXX needs to have dll-interface to be used by clients of class YYY
#endif
namespace Spinnaker
{
namespace GenApi
{
class AutoPollController;
class PortAdapter;
class SPINNAKER_API NodeMap : public virtual INodeMap, public virtual IDeviceInfo
{
public:
NodeMap(GenICam::gcstring DeviceName = "Device");
virtual ~NodeMap();
void Destroy();
void LoadXMLFromFile(GenICam::gcstring FileName);
void LoadXMLFromZIPFile(GenICam::gcstring ZipFileName);
void LoadXMLFromZIPData(const void* zipData, size_t zipSize);
void LoadXMLFromFileInject(GenICam::gcstring TargetFileName, GenICam::gcstring InjectFileName);
void LoadXMLFromString(const GenICam::gcstring& XMLData);
void LoadXMLFromStringInject(
const GenICam::gcstring& TargetXMLDataconst,
const GenICam::gcstring& InjectXMLData);
virtual void GetSupportedSchemaVersions(GenICam::gcstring_vector& SchemaVersions);
virtual GenICam::gcstring GetDeviceName();
virtual void Poll(int64_t ElapsedTime);
virtual void EnableAutoPoll(int64_t ElapsedTime);
virtual void DisableAutoPoll();
static bool ClearXMLCache();
//----------------------------------------------------------------
// INodeMap
//----------------------------------------------------------------
virtual void GetNodes(NodeList_t& Nodes) const;
virtual INode* GetNode(const GenICam::gcstring& key) const;
virtual void InvalidateNodes() const;
virtual bool Connect(IPort* pPort, const GenICam::gcstring& PortName) const;
virtual bool Connect(IPort* pPort) const;
virtual CLock& GetLock() const;
virtual uint64_t GetNumNodes() const;
// static std::shared_ptr<INode> CreateINode(::GenApi::INode* pNode);
INodeMap* _Ptr;
void* GetNodeMapHandle() const;
// implementation of IDeviceInfo
virtual GenICam::gcstring GetModelName();
virtual GenICam::gcstring GetVendorName();
virtual GenICam::gcstring GetToolTip();
virtual GenICam::gcstring GetStandardNameSpace();
virtual void GetGenApiVersion(GenICam::Version_t& Version, uint16_t& Build);
virtual void GetSchemaVersion(GenICam::Version_t& Version);
virtual void GetDeviceVersion(GenICam::Version_t& Version);
virtual GenICam::gcstring GetProductGuid();
virtual GenICam::gcstring GetVersionGuid();
private:
NodeMap(const NodeMap&);
NodeMap& operator=(const NodeMap&) = delete;
void PopulateNodeMap(void* pNodeMap, std::map<GenICam::gcstring, std::shared_ptr<INode>>& outMap);
void* m_nodeMapRef;
mutable CLock* m_pLock;
mutable std::map<GenICam::gcstring, std::shared_ptr<PortAdapter>> m_portAdapters;
mutable std::map<GenICam::gcstring, std::shared_ptr<INode>> m_nodeMap;
std::unique_ptr<AutoPollController> m_autoPoll;
int64_t m_elapsedTime = 0;
};
typedef NodeMap CNodeMapRef;
} // namespace GenApi
} // namespace Spinnaker
#ifdef _WIN32
#pragma warning(pop)
#endif
#endif // ifndef SPINNAKER_GENAPI_NODEMAP_H