Skip to content

File Node.h

File List > include > SpinGenApi > Node.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_NODE_H
#define SPINNAKER_GENAPI_NODE_H

#include "SpinnakerPlatform.h"
#include "Types.h"
#include "Base.h"
#include "GCString.h"
#include "Container.h"
#include "ISelector.h"
#include "INode.h"
#include "GCStringVector.h"
#include <list>

#ifdef _WIN32
#pragma warning(push)
#pragma warning(disable : 4251) // XXX needs to have dll-interface to be used by clients of class YYY
#pragma warning(disable : 4275) // non dll-interface structXXX used as base
#endif

namespace Spinnaker
{
    namespace GenApi
    {
        interface INodeMap;
        struct CallbackHandleType_t;

        //*************************************************************
        // Node implementation
        //*************************************************************

        class SPINNAKER_API Node : virtual public INode
        {
          public:
            struct NodeImpl; // forward declaration

            Node();

            Node(std::shared_ptr<Node::NodeImpl> pNodeHandle);

            ~Node();

            virtual GenICam::gcstring GetName(bool FullQualified = false) const;

            virtual GenApi::ENameSpace GetNameSpace() const;

            virtual EVisibility GetVisibility() const;

            virtual void InvalidateNode();

            virtual bool IsCachable() const;

            virtual EYesNo IsAccessModeCacheable() const;

            virtual ECachingMode GetCachingMode() const;

            virtual int64_t GetPollingTime() const;

            virtual GenICam::gcstring GetToolTip() const;

            virtual GenICam::gcstring GetDescription() const;

            virtual GenICam::gcstring GetDisplayName() const;

            virtual GenICam::gcstring GetDeviceName() const;

            virtual void GetChildren(GenApi::NodeList_t& Children, ELinkType LinkType = ctReadingChildren) const;

            virtual void GetParents(GenApi::NodeList_t& Parents) const;

            virtual void GetLockNodes(GenApi::NodeList_t& LockNodes) const;

            virtual CallbackHandleType RegisterCallback(CNodeCallback* pCallback);

            virtual bool DeregisterCallback(CallbackHandleType hCallback);

            virtual INodeMap* GetNodeMap() const;

            virtual GenICam::gcstring GetEventID() const;

            virtual bool IsStreamable() const;

            virtual void GetPropertyNames(GenICam::gcstring_vector& PropertyNames) const;

            virtual bool GetProperty(
                const GenICam::gcstring& PropertyName,
                GenICam::gcstring& ValueStr,
                GenICam::gcstring& AttributeStr);

            virtual void ImposeAccessMode(EAccessMode ImposedAccessMode);

            virtual void ImposeVisibility(EVisibility ImposedVisibility);

            virtual INode* GetAlias() const;

            virtual INode* GetCastAlias() const;

            virtual GenICam::gcstring GetDocuURL() const;

            virtual bool IsDeprecated() const;

            virtual EInterfaceType GetPrincipalInterfaceType() const;

            virtual bool IsFeature() const;

            void SetNodeHandle(std::shared_ptr<Node::NodeImpl> pNodeHandle);

            std::shared_ptr<Node::NodeImpl> GetNodeHandle() const;

            virtual EAccessMode GetAccessMode() const;

            virtual bool IsSelector() const;

            virtual void GetSelectedFeatures(FeatureList_t&) const;

            virtual void GetSelectingFeatures(FeatureList_t&) const;

            virtual void SetReference(INode* pBase);

            virtual void SetReference(ISelector* pBase);

            void SetNodeMap(INodeMap* pNodeMap);

            // helpers
            virtual bool operator==(int nullPtr) const;

            virtual bool operator!=(int nullPtr) const;

          protected:
            std::shared_ptr<Node::NodeImpl> m_pNodeData;

            std::list<CallbackHandleType_t*> m_Callbacks;

            INodeMap* m_pNodeMap;
        };

        typedef Node CNodeRef;

        typedef Node CSelectorRef;

    } // namespace GenApi
} // namespace Spinnaker

#ifdef _WIN32
#pragma warning(pop)
#endif

#endif // ifndef SPINNAKER_GENAPI_NODE_H