Go to the documentation of this file.
38 #include "../GenApiDll.h"
42 #include "../ICategory.h"
45 #include "../IInteger.h"
46 #include "../IBoolean.h"
47 #include "../ISelector.h"
48 #include "../NodeCallback.h"
49 #include "../EnumClasses.h"
53 #include "NodeMapData/NodeMapDataTypes.h"
54 #include "NodeMapData/NodeData.h"
56 #include "../IUserData.h"
68 template<
typename C,
typename V>
71 if (std::find(c.begin(), c.end(), v) == c.end())
107 #pragma BullseyeCoverage off
112 #pragma BullseyeCoverage on
180 virtual void GetPropertyNames(GENICAM_NAMESPACE::gcstring_vector &PropertyNames)
const;
219 #pragma BullseyeCoverage off
221 #pragma BullseyeCoverage on
240 virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList)
const;
242 virtual void CollectCallbacksToFire(std::list<CNodeCallback*> &CallbacksToFire,
bool allDependents =
false,
bool always =
false);
277 # define ADD_ORPHAN_CHILD( PropertyID, Property ) \
278 INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID( Property.NodeID() ); \
279 if( CPropertyID::IsInvalidatingPointer(PropertyID) )\
281 detail::push_back_unique(m_InvalidatingChildren, pNode); \
282 if( CPropertyID::IsReadingPointer(PropertyID) ) \
284 detail::push_back_unique(m_ReadingChildren, pNode); \
285 if( CPropertyID::IsWritingPointer(PropertyID) ) \
287 detail::push_back_unique(m_WritingChildren, pNode); \
293 # define ADD_CHILD( PropertyID, Property ) \
294 INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID( Property.NodeID() ); \
295 if( CPropertyID::IsInvalidatingPointer(PropertyID) )\
297 detail::push_back_unique(m_InvalidatingChildren, pNode);\
298 dynamic_cast<CNodeImpl*>(pNode)->SetParent( this );\
299 if( CPropertyID::IsReadingPointer(PropertyID) ) \
301 detail::push_back_unique(m_ReadingChildren, pNode);\
302 if( CPropertyID::IsWritingPointer(PropertyID) ) \
304 detail::push_back_unique(m_WritingChildren, pNode); \
310 # define ADD_ORPHAN_CHILD( PropertyID, Property ) \
311 INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID(Property.NodeID()); \
312 add_orphan_child( PropertyID, Property, pNode );
314 # define ADD_CHILD( PropertyID, Property ) \
315 INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID(Property.NodeID()); \
316 add_child( PropertyID, Property, pNode );
322 if (CPropertyID::IsInvalidatingPointer(PropertyID))
326 if (CPropertyID::IsReadingPointer(PropertyID))
329 if (CPropertyID::IsWritingPointer(PropertyID))
339 if (CPropertyID::IsInvalidatingPointer(PropertyID))
342 if (CPropertyID::IsReadingPointer(PropertyID))
345 if (CPropertyID::IsWritingPointer(PropertyID))
365 std::string nodetype;
368 return nodetype.c_str();
551 void PostSetValue( std::list<CNodeCallback*> &CallbacksToFire );
662 #if defined( _WIN32 ) && !defined( PHARLAP_WIN32 )
664 typedef std::wstring::size_type
size_type;
667 #define QUALIFY_LITERAL( x ) _L( x )
668 #define _L( x ) L ## x
669 #define GET_MODULE_FILE_NAME GetModuleFileNameW
670 #define GET_CSTR( x ) x.w_str().c_str()
671 #define GET_LOCALE_INFO GetLocaleInfoW
677 #define QUALIFY_LITERAL( x ) x
678 #define GET_MODULE_FILE_NAME GetModuleFileName
679 #define GET_CSTR( x ) x.c_str()
680 #define GET_LOCALE_INFO GetLocaleInfo
701 #endif // ifndef GENAPI_NODE_H
#define GCLOGWARN(cat,...)
Lexical analyzer for CIntSwissKnife.
enum GENAPI_NAMESPACE::_EAccessMode EAccessMode
access mode of a node
EAccessMode m_AccessModeCache
cache access mode
@ intfIBase
IBase interface.
void GetStandardNameSpace(string_t &VariableContent) const
virtual void GetPropertyNames(GENICAM_NAMESPACE::gcstring_vector &PropertyNames) const
Returns a list of the names all properties set during initialization.
FeatureList_t m_Selecting
List of selecting features.
@ _CycleDetectAccesMode
used internally for AccessMode cycle detection
INodeMapPrivate * GetNodeMapPrivate()
Retrieves the INodeMapPrivate interface.
PostSetValueFinalizer(CNodeImpl *pThis, std::list< CNodeCallback * > &CallbacksToFire)
Constructor.
NodePrivateVector_t m_AllTerminalNodes
All indirectly connected terminal nodes For details see GenICam wiki : GenApi/SoftwareArchitecture/No...
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeID_t NodeID
GENICAM_NAMESPACE::gcstring m_EventID
The EventID.
std::list< CNodeCallback * > & m_CallbacksToFire
list of callbacks to file
void GetNodeName(string_t &VariableContent) const
virtual void GetParents(GENAPI_NAMESPACE::NodeList_t &Parents) const
NodePrivateVector_t m_InvalidatingChildren
All directly connected nodes which invalidate this node For details see GenICam wiki : GenApi/Softwar...
NodePrivateVector_t m_Parents
All nodes for which this node is at least a DependecyChild.
UserData_t SetUserData(UserData_t userdata)
virtual GENAPI_NAMESPACE::ENameSpace InternalGetNameSpace() const
Get name space.
PostSetValueFinalizer & operator=(const PostSetValueFinalizer &)
Definition of polymorphical smart pointer.
virtual void InternalCheckError() const
Checks for an explicitly via the <pError> element defined error.
virtual GENICAM_NAMESPACE::gcstring InternalGetToolTip() const
Get a short description of the node.
Definition of interface INodeMapPrivate.
virtual void Initialize(GENAPI_NAMESPACE::INodeMapPrivate *const pNodeMap, CNodeData::ENodeType_t NodeType, NodeID_t &NodeID)
void PostSetValue(std::list< CNodeCallback * > &CallbacksToFire)
Fires callback on all nodes which became affected by a SetValue call into the node tree.
void PreSetValue()
Invalidates all nodes which will become affected by a SetValue call into the node tree.
bool m_DontDeleteThisCache
indicates that the cache has been filled and should not be cleared at the end of the operation
virtual bool IsStreamable() const
True if the node is streamable.
ETerminalPropagationState m_propagationState
Current state for propagating terminals.
void SetParent(INodePrivate *pParent)
Sets a parent : CAVE : for internal use only...
INodeMapPrivate * m_pNodeMap
Pointer to the node map.
Standard implementation for the INode and the ISelector interface.
A string class which is a clone of std::string.
GENICAM_NAMESPACE::ILogger * m_pRangeLog
Logger for messages concerning the range check.
bool m_ListOfValidValuesCacheValid
true if the list of valid value is cached
virtual bool CanBeRead(bool Verify)
virtual bool GetProperty(const GENICAM_NAMESPACE::gcstring &PropertyName, GENICAM_NAMESPACE::gcstring &ValueStr, GENICAM_NAMESPACE::gcstring &AttributeStr)
Retrieves a property plus an additional attribute by name.
virtual void GetSelectingFeatures(FeatureList_t &) const
void Value2String(T Value, GENICAM_NAMESPACE::gcstring &ValueStr)
Converts an T property to a string.
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT IUserData
Interface to manage user data stored in nodes or nodemaps.
~EntryMethodFinalizer()
Destructor calling.
virtual void InternalGetChildren(GENAPI_NAMESPACE::NodeList_t &Children, ELinkType LinkType) const
Get all children of the node.
virtual INodeMap * InternalGetNodeMap() const
Retrieves the node map.
GENICAM_NAMESPACE::ILogger * m_pPortLog
Logger for messages concerning the port access.
callback body instance for INode pointers
NodeList_t m_Invalidators
List of references to nodes which may invalidate this node.
virtual void InternalInvalidateNode(std::list< CNodeCallback * > &CallbacksToFire)
virtual EInterfaceType InternalGetPrincipalInterfaceType() const
Implementation of IBase::GetPrincipalInterfaceType()
virtual EYesNo InternalIsAccessModeCacheable() const
True if the AccessMode can be cached.
CLock & GetLock() const
Acquire central lock.
virtual int64_t InternalGetPollingTime() const
recommended polling time (for not cachable nodes)
virtual GENICAM_NAMESPACE::gcstring GetEventID() const
Get the EventId of the node.
GENICAM_NAMESPACE::gcstring m_Name
The name of the node.
NodeID_t m_NodeID
The node's ID.
UserData_t m_pUserData
Storage of user defined data. Ownership remains by the user!. Use IUserData interface to access the d...
virtual void SetInvalid(ESetInvalidMode simMode)
EYesNo m_IsDeprecated
indicates that the feature should not be used any more
bool IsAccessModeCached() const
returns true, if the AccessModeCache is valid
bool DeleteDoubleCallbacksCompare(GENAPI_NAMESPACE::CNodeCallback *pA, GENAPI_NAMESPACE::CNodeCallback *pB)
Helper function for DeleteDoubleCallbacks.
virtual void CollectCallbacksToFire(std::list< CNodeCallback * > &CallbacksToFire, bool allDependents=false, bool always=false)
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT bool Verify
virtual GENICAM_NAMESPACE::gcstring InternalGetDisplayName() const
INodeMapPrivate * m_pNodeMapPrivate
Private cache for the INodeMapPrivate pointer.
EYesNo m_IsStreamable
indicates if the node is streamable
GENICAM_INTERFACE INodeMap
Interface to access the node map.
virtual void SetProperty(CProperty &Property)
enum GENAPI_NAMESPACE::_EInterfaceType EInterfaceType
typedef for interface type
NodePrivateVector_t m_WritingChildren
all nodes which can write a value further down the node stack For details see GenICam wiki : GenApi/S...
virtual GENICAM_NAMESPACE::gcstring InternalGetDocuURL() const
Gets a URL pointing to the documentation of that feature.
ENameSpace m_NameSpace
The namespace of the node.
CNodeImpl * m_pThis
pointer to owner object
void CacheAccessModeIfPossible(EAccessMode AccessMode) const
void add_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &, INodePrivate *pNode)
virtual NodeID_t GetNodeID()
GENICAM_NAMESPACE::gcstring m_ToolTip
The ToolTip for the node.
GENICAM_NAMESPACE::gcstring m_DocuURL
A URL pointing or the documentation of this featrues.
virtual EVisibility InternalGetVisibility() const
Get the recommended visibility of the node.
void DeleteDoubleCallbacks(std::list< CNodeCallback * > &CallbackList)
deletes double callbacks from list
GENICAM_NAMESPACE::ILogger * m_pPreProcLog
Logger for things done during pre-processing of the node map, e.g. determining dependencies.
GENICAM_NAMESPACE::gcstring_vector m_PropertyNames
Helper: A list of all properties belonging to this node.
virtual CNodeData::ENodeType_t GetNodeType()
CBooleanPolyRef m_IsLocked
Reference to a Node, which indicates if the node is locked (i.e. not writable)
EMethod
denotes through which method call the node tree was entered
enum GENAPI_NAMESPACE::_ELinkType ELinkType
typedef for link type
virtual void GetTerminalNodes(GENAPI_NAMESPACE::NodeList_t &Terminals) const
CNodeData::ENodeType_t m_NodeTypeEnum
virtual bool IsTerminalNode() const
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT IEnumeration
Interface for enumeration properties.
Used to ensure that PostSetValue() is called in any case.
virtual GENICAM_NAMESPACE::gcstring InternalGetDeviceName() const
Get a name of the device.
GENICAM_NAMESPACE::gcstring GetQualifiedName(GENICAM_NAMESPACE::gcstring Name, ENameSpace NameSpace) const
Creates the full qualified name.
virtual bool InternalDeregisterCallback(CallbackHandleType hCallback)
Deregister change callback.
CBooleanPolyRef m_IsAvailable
Reference to a Node, which indicates if the node is available.
@ eBeingVisited
PropagateTerminals is in progress for node, used for detecting cycles.
Definition of interface INodePrivate.
virtual ECachingMode InternalGetCachingMode() const
Get Caching Mode.
void add_orphan_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &, INodePrivate *pNode)
EYesNo m_AccessModeCacheability
indicates if the AccessMode is cacheable
ESetInvalidMode
Three different modes of operation for INodePrivate::SetInvalid()
std::string::size_type size_type
intptr_t CallbackHandleType
the callback handle for nodes
GENICAM_INTERFACE INode
Interface common to all nodes.
virtual EAccessMode InternalGetAccessMode() const
Get the access mode of the node.
virtual void ImposeVisibility(EVisibility ImposedVisibility)
Imposes a visibility to the natural visibility of the node.
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT INodeMapPrivate
NodeMap functions used for initialization.
virtual INode * GetCastAlias() const
Retrieves the a node which describes the same feature so that it can be casted.
enum GENAPI_NAMESPACE::_EYesNo EYesNo
Defines the choices of a Yes/No alternatives.
UserData_t GetUserData() const
ECachingMode m_CachingMode
indicates that the node has changed
std::vector< INodePrivate * > NodePrivateVector_t
a vector of node references using the INodePrivate interface
void GetModelName(string_t &VariableContent) const
int64_t m_PollingTime
recommended polling time in [ms]
@ eNotVisited
PropagateTerminals not run for node.
GENICAM_NAMESPACE::gcstring m_DisplayName
The display name string of the node.
Encapsulates a GenApi pointer dealing with the dynamic_cast automatically.
GENICAM_NAMESPACE::ILogger * m_pAccessLog
Logger for messages concerning the AccessMode.
CBooleanPolyRef m_IsImplemented
Reference to a Node, which indicates if the node is implemented.
virtual bool InternalIsValueCacheValid() const
Checks if the value comes from cache or is requested from another node.
GENICAM_NAMESPACE::gcstring GetNodeType() const
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeType
GENICAM_NAMESPACE::ILogger * m_pCacheLog
Logger for messages concerning the caching access.
GENICAM_INTERFACE INodePrivate
Interface including the methods for node construction common to all nodes.
std::list< CNodeCallback * > m_Callbacks
List of callbacks.
virtual bool IsSelector() const
GENICAM_NAMESPACE::ILogger * m_pValueLog
Logger for messages concerning the getting and setting values.
enum GENAPI_NAMESPACE::_ENameSpace ENameSpace
Defines if a node name is standard or custom.
enum GENAPI_NAMESPACE::_EVisibility EVisibility
recommended visibility of a node
void GetNodeValue(const CValuePtr &ptrValue, CNodeImpl::string_t &VariableContent) const
virtual GENICAM_NAMESPACE::gcstring InternalGetName(bool FullQualified=false) const
Get node name.
ETerminalPropagationState
States when propagating terminals.
INode * m_pCastAlias
Pointer to a Node, which describes the same feature as this one so that it can be casted.
~PostSetValueFinalizer()
Destructor calling PostSetValue()
virtual bool IsFeature() const
True if the node can be reached via category nodes from a category node named "Std::Root".
@ _UndefinedAccesMode
Object is not yet initialized.
IEnumeration * m_pError
Pointer to a Error class.
GENICAM_NAMESPACE::ILogger * m_pMiscLog
Logger for messages concerning miscellaneous access which does not fit to the other categories.
virtual const char * c_str(void) const
@ eTerminalPropagationDone
PropagateTerminals is done for node, can just copy from m_AllTerminalNodes.
AutoLock Lock
shortcut for the lock type
Definition of value2string and string2value functions.
EVisibility m_ImposedVisibility
Visibility imposed to the natural visibility of the node.
EAccessMode m_ImposedAccessMode
Access mode imposed on the natural access mode of the node.
enum GENAPI_NAMESPACE::_ECachingMode ECachingMode
caching mode of a register
ECachingMode m_CachingModeCache
stores the cached value of the CachingMode
GENICAM_NAMESPACE::gcstring m_Description
The Description of the node.
static const size_t MaxPath
void GetVendorName(string_t &VariableContent) const
INode * m_pAlias
Pointer to a Node, which describes the same feature as this one.
EntryMethodFinalizer(const INodePrivate *pThis, EMethod EntryMethod, bool stremable=false, bool IgnoreCache=false)
Constructor.
int64_t m_ElapsedTime
time elapsed since the last poll
Used to ensure that PostSetValue() is called in any case.
NodePrivateVector_t m_VariableChildren
All node use as variable by this node.
virtual CallbackHandleType InternalRegisterCallback(CNodeCallback *pCallback)
Register change callback.
GENICAM_NAMESPACE::gcstring m_DeviceName
The device name of the node tree.
EYesNo m_IsFeature
indicates that the node is a feature that is reachable from the Root node via categories
FeatureList_t m_Selected
List of selected features.
EVisibility m_Visibility
recommended visibility;
virtual ~CNodeImpl()
Destructor.
void GetStringStreamContent(const ostringstream_t &Content, string_t &VariableContent) const
virtual INode * GetAlias() const
Retrieves the a node which describes the same feature in a different way.
void push_back_unique(C &c, const V &v)
Add a value to container if not already present.
CBooleanPolyRef m_BlockPolling
Reference to a Node, which indicates if the node is not cached.
Counter & GetBathometer() const
The bathometer is a counter used to measure the depth of SetValue-like call chains.
NodePrivateVector_t m_AllDependingNodes
All directly or indirectly connected nodes which are invalidated by this nodes (i....
bool m_TerminalNodeWritten
indicates that this terminal node was written and not yet invalidated.
std::ostringstream ostringstream_t
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT ISelector
Interface for groups of features selected by a single one.
NodePrivateVector_t m_ReadingChildren
all nodes which can be read from For details see GenICam wiki : GenApi/SoftwareArchitecture/NodeDepen...
virtual bool InternalIsDeprecated() const
True if the node should not be used any more.
virtual void FinalConstruct()
GENICAM_NAMESPACE::gcstring m_Extension
The metadata from the extension.
virtual bool Poll(int64_t ElapsedTime)
virtual GENICAM_NAMESPACE::gcstring InternalGetDescription() const
Get a long description of the node.
bool m_ValueCacheValid
true if the value cache is valid
virtual bool CanBeWritten(bool Verify)
A reference to a bool which can bei either an bool variable, or a pointer to an IInteger,...
virtual void ImposeAccessMode(EAccessMode ImposedAccessMode)
Imposes an access mode to the natural access mode of the node.
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT IBase
Base interface common to all nodes.
virtual bool InternalIsCachable() const
Is the node value cachable.
node_vector NodeList_t
a list of node references
virtual void GetSelectedFeatures(FeatureList_t &list) const
rc_genicam_api
Author(s): Heiko Hirschmueller
autogenerated on Wed Dec 4 2024 03:10:11