Node.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // (c) 2006-2009 by Basler Vision Technologies
3 // Section: Vision Components
4 // Project: GenApi
5 // Author: Fritz Dierks
6 // $Header$
7 //
8 // License: This file is published under the license of the EMVA GenICam Standard Group.
9 // A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
10 // If for some reason you are missing this file please contact the EMVA or visit the website
11 // (http://www.genicam.org) for a full copy.
12 //
13 // THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
14 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
17 // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
21 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
23 // POSSIBILITY OF SUCH DAMAGE.
24 //-----------------------------------------------------------------------------
30 #ifndef GENAPI_NODE_H
31 #define GENAPI_NODE_H
32 
33 #include <string>
34 #include <sstream>
35 #include <algorithm>
36 #include <cctype>
37 #include "Base/GCException.h"
38 #include "../GenApiDll.h"
39 #include "../Synch.h"
40 #include "../Types.h"
41 #include "../INode.h"
42 #include "../ICategory.h"
43 #include "INodePrivate.h"
44 #include "INodeMapPrivate.h"
45 #include "../IInteger.h"
46 #include "../IBoolean.h"
47 #include "../ISelector.h"
48 #include "../NodeCallback.h"
49 #include "../EnumClasses.h"
50 #include "Log.h"
51 #include "Value2String.h"
52 #include "PolyReference.h"
53 #include "NodeMapData/NodeMapDataTypes.h"
54 #include "NodeMapData/NodeData.h"
55 //#include "NodeMap.h"
56 #include "../IUserData.h"
57 #include <list>
58 
59 class CProperty;
60 class CNodeDataMap;
61 class CNodeMap;
62 
63 namespace GENAPI_NAMESPACE
64 {
65  namespace detail
66  {
68  template< typename C, typename V>
69  void push_back_unique(C &c, const V &v)
70  {
71  if (std::find(c.begin(), c.end(), v) == c.end())
72  {
73  c.push_back(v);
74  }
75  }
76  }
77 
78  //*************************************************************
79  // CNodeImpl class
80  //*************************************************************
81 
86  class CNodeImpl : public INodePrivate, public ISelector, public IUserData
87  {
88  public:
89  //-------------------------------------------------------------
91 
92  CNodeImpl();
94 
96  virtual ~CNodeImpl();
98 
99  protected:
100  //-------------------------------------------------------------
102 
103  virtual EAccessMode InternalGetAccessMode() const;
105 
107  #pragma BullseyeCoverage off
109  {
110  return intfIBase;
111  }
112  #pragma BullseyeCoverage on
113 
115  EAccessMode InternalGetAccessMode(IBase* pValue) const;
117 
118  protected:
119  //-------------------------------------------------------------
121 
122  virtual GENICAM_NAMESPACE::gcstring InternalGetName(bool FullQualified=false) const;
124 
126  virtual GENAPI_NAMESPACE::ENameSpace InternalGetNameSpace()const;
127 
129  virtual EVisibility InternalGetVisibility() const;
130 
131  // Invalidate the node
132  virtual void InternalInvalidateNode( std::list<CNodeCallback*> &CallbacksToFire );
133 
135  virtual bool InternalIsCachable() const;
136 
138  virtual ECachingMode InternalGetCachingMode() const;
139 
141  virtual int64_t InternalGetPollingTime() const;
142 
144  virtual GENICAM_NAMESPACE::gcstring InternalGetToolTip() const;
145 
147  virtual GENICAM_NAMESPACE::gcstring InternalGetDescription() const;
148 
149  // Get node display name
150  virtual GENICAM_NAMESPACE::gcstring InternalGetDisplayName() const;
151 
153  virtual GENICAM_NAMESPACE::gcstring InternalGetDeviceName() const;
154 
156  virtual void InternalGetChildren(GENAPI_NAMESPACE::NodeList_t &Children, ELinkType LinkType) const;
157 
159 
160  virtual CallbackHandleType InternalRegisterCallback( CNodeCallback *pCallback );
161 
163 
166  virtual bool InternalDeregisterCallback( CallbackHandleType hCallback );
167 
169  virtual INodeMap* InternalGetNodeMap() const;
170 
172  virtual GENICAM_NAMESPACE::gcstring GetEventID() const;
173 
175  virtual bool IsStreamable() const;
176 
177  virtual void GetParents(GENAPI_NAMESPACE::NodeList_t &Parents) const;
178 
180  virtual void GetPropertyNames(GENICAM_NAMESPACE::gcstring_vector &PropertyNames) const;
181 
183 
184  virtual bool GetProperty(const GENICAM_NAMESPACE::gcstring& PropertyName, GENICAM_NAMESPACE::gcstring& ValueStr, GENICAM_NAMESPACE::gcstring& AttributeStr);
185 
187  virtual void ImposeAccessMode(EAccessMode ImposedAccessMode);
188 
190  virtual void ImposeVisibility(EVisibility ImposedVisibility);
191 
193  virtual INode* GetAlias() const;
194 
196  virtual INode* GetCastAlias() const;
197 
199  virtual void InternalCheckError() const;
200 
202  virtual GENICAM_NAMESPACE::gcstring InternalGetDocuURL() const;
203 
205  virtual bool InternalIsDeprecated() const;
206 
208  virtual bool IsFeature() const;
209 
211  virtual EYesNo InternalIsAccessModeCacheable() const;
212 
214 
215  inline bool IsAccessModeCached() const
216  {
217  if( _UndefinedAccesMode == m_AccessModeCache )
218  return false;
219 #pragma BullseyeCoverage off
220  if( _CycleDetectAccesMode == m_AccessModeCache )
221 #pragma BullseyeCoverage on
222  {
223  // the cycle is neutralized by making at least one node AccessMode cacheable
224  m_AccessModeCache = RW;
225  GCLOGWARN( m_pAccessLog, "InternalGetAccessMode : ReadCycle detected at = '%s'", m_Name.c_str() );
226  }
227  return true;
228  }
230 
231  public:
232  //-------------------------------------------------------------
234 
235  virtual void Initialize(GENAPI_NAMESPACE::INodeMapPrivate* const pNodeMap, CNodeData::ENodeType_t NodeType, NodeID_t &NodeID );
236  virtual CNodeData::ENodeType_t GetNodeType();
237  virtual NodeID_t GetNodeID();
238  virtual void FinalConstruct();
239  virtual void SetProperty( CProperty &Property );
240  virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList) const;
241  virtual void SetInvalid(ESetInvalidMode simMode);
242  virtual void CollectCallbacksToFire(std::list<CNodeCallback*> &CallbacksToFire, bool allDependents = false, bool always = false);
243  virtual bool IsTerminalNode() const;
244  virtual void GetTerminalNodes( GENAPI_NAMESPACE::NodeList_t& Terminals ) const;
245  virtual bool Poll( int64_t ElapsedTime );
246  virtual bool CanBeWritten(bool Verify);
247  virtual bool CanBeRead(bool Verify);
249 
250  public:
251  //-------------------------------------------------------------
253 
254  virtual bool IsSelector() const;
255  virtual void GetSelectedFeatures( FeatureList_t& list ) const;
256  virtual void GetSelectingFeatures( FeatureList_t& ) const;
258 
259  public:
260 
263  {
264  return m_pNodeMap;
265  }
266 
268  inline void SetParent( INodePrivate *pParent )
269  {
270  detail::push_back_unique(m_Parents, pParent);
271  }
272 
273  // 1 : use macro for speed
274  // 0 : used function for debugging
275 #if 0
276 
277 # define ADD_ORPHAN_CHILD( PropertyID, Property ) \
278  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID( Property.NodeID() ); \
279  if( CPropertyID::IsInvalidatingPointer(PropertyID) )\
280  { \
281  detail::push_back_unique(m_InvalidatingChildren, pNode); \
282  if( CPropertyID::IsReadingPointer(PropertyID) ) \
283  { \
284  detail::push_back_unique(m_ReadingChildren, pNode); \
285  if( CPropertyID::IsWritingPointer(PropertyID) ) \
286  { \
287  detail::push_back_unique(m_WritingChildren, pNode); \
288  } \
289  } \
290  }
291 
292  // the compiler will optimize the if() statements away if PropertyID is a constant
293 # define ADD_CHILD( PropertyID, Property ) \
294  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID( Property.NodeID() ); \
295  if( CPropertyID::IsInvalidatingPointer(PropertyID) )\
296  { \
297  detail::push_back_unique(m_InvalidatingChildren, pNode);\
298  dynamic_cast<CNodeImpl*>(pNode)->SetParent( this );\
299  if( CPropertyID::IsReadingPointer(PropertyID) ) \
300  { \
301  detail::push_back_unique(m_ReadingChildren, pNode);\
302  if( CPropertyID::IsWritingPointer(PropertyID) ) \
303  { \
304  detail::push_back_unique(m_WritingChildren, pNode); \
305  } \
306  } \
307  }
308 
309 #else
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 );
313 
314 # define ADD_CHILD( PropertyID, Property ) \
315  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID(Property.NodeID()); \
316  add_child( PropertyID, Property, pNode );
317 
318  // This is a helper function performing the same tasks as the macro above
319  // In contrast to the macro however you can set breakpoint here :-)
320  void add_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &/*Property*/, INodePrivate *pNode)
321  {
322  if (CPropertyID::IsInvalidatingPointer(PropertyID))
323  {
324  detail::push_back_unique(m_InvalidatingChildren, pNode);
325  dynamic_cast<CNodeImpl*>(pNode)->SetParent(this); // this is not present in add_orphan_child
326  if (CPropertyID::IsReadingPointer(PropertyID))
327  {
328  detail::push_back_unique(m_ReadingChildren, pNode);
329  if (CPropertyID::IsWritingPointer(PropertyID))
330  {
331  detail::push_back_unique(m_WritingChildren, pNode);
332  }
333  }
334  }
335  }
336 
337  void add_orphan_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &/*Property*/, INodePrivate *pNode)
338  {
339  if (CPropertyID::IsInvalidatingPointer(PropertyID))
340  {
341  detail::push_back_unique(m_InvalidatingChildren, pNode);
342  if (CPropertyID::IsReadingPointer(PropertyID))
343  {
344  detail::push_back_unique(m_ReadingChildren, pNode);
345  if (CPropertyID::IsWritingPointer(PropertyID))
346  {
347  detail::push_back_unique(m_WritingChildren, pNode);
348  }
349  }
350  }
351  }
352 #endif
353  private:
354  //-------------------------------------------------------------
355  // ! \name Interface IUserData
357  UserData_t GetUserData() const;
358  UserData_t SetUserData( UserData_t userdata );
360  protected:
361  //-------------------------------------------------------------
363 
365  std::string nodetype;
366  Value2String(m_NodeTypeEnum, nodetype);
367 
368  return nodetype.c_str();
369  }
370 
373 
376 
379 
382 
385 
388 
391 
394 
397 
400 
403 
406 
409 
412 
415 
418 
420  FeatureList_t m_Selected;
421 
423  FeatureList_t m_Selecting;
424 
427 
430 
433 
436 
439 
442  {
445  eTerminalPropagationDone
446  };
447 
450 
453 
456 
459 
461  GENICAM_NAMESPACE::gcstring_vector m_PropertyNames;
462 
465 
467 
468  protected:
469  //-------------------------------------------------------------
471 
472  NodePrivateVector_t m_Parents;
474 
478 
482 
486 
490 
494 
498 
499  protected:
500  //-------------------------------------------------------------
502 
503  mutable ECachingMode m_CachingModeCache;
505 
508 
509  inline void CacheAccessModeIfPossible( EAccessMode AccessMode ) const
510  {
511  m_AccessModeCache = ( Yes == InternalIsAccessModeCacheable() ) ? AccessMode : _UndefinedAccesMode;
512  }
513 
515  mutable bool m_ValueCacheValid;
516 
519 
521  virtual bool InternalIsValueCacheValid() const;
522 
525 
527 
528  protected:
529  //-------------------------------------------------------------
531 
532  INodeMapPrivate* m_pNodeMap;
534 
537 
539  typedef AutoLock Lock;
540 
542  CLock& GetLock() const;
543 
545  Counter& GetBathometer() const;
546 
548  void PreSetValue();
549 
551  void PostSetValue( std::list<CNodeCallback*> &CallbacksToFire );
552 
555 
558 
561  {
562  public:
564  PostSetValueFinalizer(CNodeImpl* pThis, std::list<CNodeCallback*> &CallbacksToFire ) :
565  m_pThis( pThis ),
566  m_CallbacksToFire( CallbacksToFire )
567  {}
568 
571  {
572  m_pThis->PostSetValue( m_CallbacksToFire );
573  }
574 
577 
579  std::list<CNodeCallback*> &m_CallbacksToFire;
580 
581  private:
583  // \{
586  // \}
587  };
588 
590  std::list<CNodeCallback*> m_Callbacks;
591 
594  {
595  public:
597  EntryMethodFinalizer(const INodePrivate* pThis, EMethod EntryMethod, bool stremable = false, bool IgnoreCache = false)
598  {
599  assert(pThis);
600  m_pNodeMapPrivate = dynamic_cast<INodeMapPrivate*>( pThis->GetNodeMap() );
601  m_pNodeMapPrivate->SetEntryPoint(EntryMethod, pThis, stremable, IgnoreCache);
602  }
603 
606  {
607  m_pNodeMapPrivate->ResetEntryPoint();
608  }
609 
610  private:
613  };
614 
616  GENICAM_NAMESPACE::gcstring GetQualifiedName(GENICAM_NAMESPACE::gcstring Name, ENameSpace NameSpace) const;
617 
619 
620  //-------------------------------------------------------------
622 
623  // for safety reasons please keep these member variables at the
624  // end of the class' memory layout
625 
628 
631 
634 
637 
640 
643 
646 
648 
649 
651  NodeID_t m_NodeID;
652 
653  CNodeData::ENodeType_t m_NodeTypeEnum;
654 
656 
660 
661  private:
662 #if defined( _WIN32 ) && !defined( PHARLAP_WIN32 )
663  typedef std::wstring string_t;
664  typedef std::wstring::size_type size_type;
665  typedef std::wostringstream ostringstream_t;
666  typedef wchar_t char_t;
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
672 #else
673  typedef std::string string_t;
674  typedef std::string::size_type size_type;
676  typedef char char_t;
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
681 #endif
682 
683  static const size_t MaxPath;
684  void GetNodeName( string_t& VariableContent ) const;
685  void GetStringStreamContent( const ostringstream_t& Content, string_t& VariableContent ) const;
686  void GetVendorName( string_t& VariableContent ) const;
687  void GetModelName( string_t& VariableContent ) const;
688  void GetStandardNameSpace( string_t& VariableContent ) const;
689  void GetNodeValue( const CValuePtr& ptrValue, CNodeImpl::string_t& VariableContent ) const;
690 
691  };
692 
695 
697  void DeleteDoubleCallbacks( std::list<CNodeCallback*> &CallbackList );
698 
699 }
700 
701 #endif // ifndef GENAPI_NODE_H
void add_orphan_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &, INodePrivate *pNode)
Definition: Node.h:337
EVisibility m_ImposedVisibility
Visibility imposed to the natural visibility of the node.
Definition: Node.h:435
Definition of value2string and string2value functions.
virtual bool CanBeWritten(bool Verify)=0
std::list< CNodeCallback * > m_Callbacks
List of callbacks.
Definition: Node.h:590
enum GENAPI_NAMESPACE::_EVisibility EVisibility
recommended visibility of a node
virtual GENICAM_NAMESPACE::gcstring GetStandardNameSpace()=0
Get the standard name space.
virtual Counter & GetBathometer()=0
Returns the object which counts the depth of SetValue() call-chains.
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT IBase
Base interface common to all nodes.
Definition: IBase.h:55
GENICAM_NAMESPACE::gcstring m_ToolTip
The ToolTip for the node.
Definition: Node.h:387
GENICAM_NAMESPACE::gcstring m_Name
The name of the node.
Definition: Node.h:372
std::string string_t
Definition: Node.h:673
virtual bool IsTerminalNode() const =0
Returns true, if this node is terminal.
virtual void SetProperty(CProperty &Property)=0
Sets a property to the node map itself.
bool m_DontDeleteThisCache
indicates that the cache has been filled and should not be cleared at the end of the operation ...
Definition: Node.h:554
EYesNo m_AccessModeCacheability
indicates if the AccessMode is cacheable
Definition: Node.h:524
GENICAM_NAMESPACE::gcstring m_Description
The Description of the node.
Definition: Node.h:390
INodeMapPrivate * GetNodeMapPrivate()
Retrieves the INodeMapPrivate interface.
Definition: Node.h:262
NodeID_t m_NodeID
The node&#39;s ID.
Definition: Node.h:651
CBooleanPolyRef m_IsImplemented
Reference to a Node, which indicates if the node is implemented.
Definition: Node.h:396
A reference to a bool which can bei either an bool variable, or a pointer to an IInteger, an IEnumeration, or an IBoolean.
NodePrivateVector_t m_AllDependingNodes
All directly or indirectly connected nodes which are invalidated by this nodes (i.e. which are dependent on this node) For details see GenICam wiki : GenApi/SoftwareArchitecture/NodeDependencies.
Definition: Node.h:489
std::string::size_type size_type
Definition: Node.h:674
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT bool Verify
Definition: IBoolean.h:61
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT IUserData
Interface to manage user data stored in nodes or nodemaps.
Definition: IUserData.h:34
GENICAM_NAMESPACE::ILogger * m_pAccessLog
Logger for messages concerning the AccessMode.
Definition: Node.h:627
bool m_ValueCacheValid
true if the value cache is valid
Definition: Node.h:515
IBase interface.
Definition: Types.h:191
#define GCLOGWARN(cat,...)
Definition: CLog.h:131
ETerminalPropagationState m_propagationState
Current state for propagating terminals.
Definition: Node.h:449
virtual void GetSelectedFeatures(FeatureList_t &) const =0
retrieve the group of selected features
std::list< CNodeCallback * > & m_CallbacksToFire
list of callbacks to file
Definition: Node.h:579
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT INodeMapPrivate
NodeMap functions used for initialization.
std::vector< INodePrivate *> NodePrivateVector_t
a vector of node references using the INodePrivate interface
Definition: INodePrivate.h:58
GENICAM_INTERFACE INodePrivate
Interface including the methods for node construction common to all nodes.
Definition: INodePrivate.h:54
ENameSpace m_NameSpace
The namespace of the node.
Definition: Node.h:378
EYesNo m_IsFeature
indicates that the node is a feature that is reachable from the Root node via categories ...
Definition: Node.h:464
bool IsAccessModeCached() const
returns true, if the AccessModeCache is valid
Definition: Node.h:215
EVisibility m_Visibility
recommended visibility;
Definition: Node.h:393
CBooleanPolyRef m_IsAvailable
Reference to a Node, which indicates if the node is available.
Definition: Node.h:399
CBooleanPolyRef m_BlockPolling
Reference to a Node, which indicates if the node is not cached.
Definition: Node.h:405
__int64 int64_t
Definition: config-win32.h:21
virtual bool CanBeRead(bool Verify)=0
PostSetValueFinalizer(CNodeImpl *pThis, std::list< CNodeCallback *> &CallbacksToFire)
Constructor.
Definition: Node.h:564
NodePrivateVector_t m_VariableChildren
All node use as variable by this node.
Definition: Node.h:496
GENICAM_NAMESPACE::gcstring m_Extension
The metadata from the extension.
Definition: Node.h:375
GENICAM_NAMESPACE::ILogger * m_pCacheLog
Logger for messages concerning the caching access.
Definition: Node.h:639
void CacheAccessModeIfPossible(EAccessMode AccessMode) const
Definition: Node.h:509
virtual void ImposeVisibility(EVisibility ImposedVisibility)=0
Imposes a visibility to the natural visibility of the node.
used internally for AccessMode cycle detection
Definition: Types.h:62
GENICAM_NAMESPACE::gcstring m_DeviceName
The device name of the node tree.
Definition: Node.h:381
GENICAM_NAMESPACE::ILogger * m_pPortLog
Logger for messages concerning the port access.
Definition: Node.h:636
virtual bool IsFeature() const =0
True if the node can be reached via category nodes from a category node named "Root".
void DeleteDoubleCallbacks(std::list< CNodeCallback *> &CallbackList)
deletes double callbacks from list
virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList) const =0
Retrieves a property from the node map itself.
EYesNo m_IsDeprecated
indicates that the feature should not be used any more
Definition: Node.h:458
callback body instance for INode pointers
Definition: NodeCallback.h:55
GENICAM_INTERFACE INodeMap
Interface to access the node map.
Definition: INode.h:52
virtual void CollectCallbacksToFire(std::list< CNodeCallback *> &CallbacksToFire, bool allDependents=false, bool always=false)=0
Update the registered callbacks.
virtual EInterfaceType InternalGetPrincipalInterfaceType() const
Implementation of IBase::GetPrincipalInterfaceType()
Definition: Node.h:108
NodePrivateVector_t m_AllTerminalNodes
All indirectly connected terminal nodes For details see GenICam wiki : GenApi/SoftwareArchitecture/No...
Definition: Node.h:493
GENICAM_NAMESPACE::ILogger * m_pRangeLog
Logger for messages concerning the range check.
Definition: Node.h:633
CNodeData::ENodeType_t m_NodeTypeEnum
Definition: Node.h:653
NodePrivateVector_t m_WritingChildren
all nodes which can write a value further down the node stack For details see GenICam wiki : GenApi/S...
Definition: Node.h:481
Used to ensure that PostSetValue() is called in any case.
Definition: Node.h:560
GENICAM_NAMESPACE::gcstring m_EventID
The EventID.
Definition: Node.h:426
EntryMethodFinalizer(const INodePrivate *pThis, EMethod EntryMethod, bool stremable=false, bool IgnoreCache=false)
Constructor.
Definition: Node.h:597
UserData_t m_pUserData
Storage of user defined data. Ownership remains by the user!. Use IUserData interface to access the d...
Definition: Node.h:659
node_vector NodeList_t
a list of node references
Definition: INode.h:55
CNodeImpl * m_pThis
pointer to owner object
Definition: Node.h:576
enum GENAPI_NAMESPACE::_ECachingMode ECachingMode
caching mode of a register
INode * m_pAlias
Pointer to a Node, which describes the same feature as this one.
Definition: Node.h:411
bool DeleteDoubleCallbacksCompare(GENAPI_NAMESPACE::CNodeCallback *pA, GENAPI_NAMESPACE::CNodeCallback *pB)
Helper function for DeleteDoubleCallbacks.
Encapsulates a GenApi pointer dealing with the dynamic_cast automatically.
Definition: Pointer.h:51
NodePrivateVector_t m_ReadingChildren
all nodes which can be read from For details see GenICam wiki : GenApi/SoftwareArchitecture/NodeDepen...
Definition: Node.h:477
std::ostringstream ostringstream_t
Definition: Node.h:675
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT IEnumeration
Interface for enumeration properties.
Definition: IEnumeration.h:60
enum GENAPI_NAMESPACE::_EYesNo EYesNo
Defines the choices of a Yes/No alternatives.
virtual void GetParents(GENAPI_NAMESPACE::NodeList_t &Parents) const =0
Gets all nodes this node is directly depending on.
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeID_t NodeID
static const size_t MaxPath
Definition: Node.h:683
GENICAM_NAMESPACE::gcstring GetNodeType() const
Definition: Node.h:364
virtual IBoolean & operator=(bool Value)
Set node value.
Definition: IBoolean.h:64
GENICAM_NAMESPACE::ILogger * m_pPreProcLog
Logger for things done during pre-processing of the node map, e.g. determining dependencies.
Definition: Node.h:642
IEnumeration * m_pError
Pointer to a Error class.
Definition: Node.h:408
Definition of polymorphical smart pointer.
virtual void ImposeAccessMode(EAccessMode ImposedAccessMode)=0
Imposes an access mode to the natural access mode of the node.
NodePrivateVector_t m_InvalidatingChildren
All directly connected nodes which invalidate this node For details see GenICam wiki : GenApi/Softwar...
Definition: Node.h:485
EMethod
denotes through which method call the node tree was entered
Definition: Exception.h:40
virtual INode * GetAlias() const =0
Retrieves the a node which describes the same feature in a different way.
virtual bool IsStreamable() const =0
True if the node is streamable.
void add_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &, INodePrivate *pNode)
Definition: Node.h:320
GENICAM_NAMESPACE::ILogger * m_pValueLog
Logger for messages concerning the getting and setting values.
Definition: Node.h:630
int64_t m_ElapsedTime
time elapsed since the last poll
Definition: Node.h:536
bool m_TerminalNodeWritten
indicates that this terminal node was written and not yet invalidated.
Definition: Node.h:557
AutoLock Lock
shortcut for the lock type
Definition: Node.h:539
GENICAM_NAMESPACE::gcstring m_DisplayName
The display name string of the node.
Definition: Node.h:384
virtual GENICAM_NAMESPACE::gcstring GetEventID() const =0
Get the EventId of the node.
Standard implementation for the INode and the ISelector interface.
Definition: Node.h:86
intptr_t CallbackHandleType
the callback handle for nodes
Definition: INode.h:58
virtual CNodeData::ENodeType_t GetNodeType()=0
Reads back the node type.
EAccessMode m_ImposedAccessMode
Access mode imposed on the natural access mode of the node.
Definition: Node.h:432
EAccessMode m_AccessModeCache
cache access mode
Definition: Node.h:507
virtual UserData_t SetUserData(UserData_t userdata)=0
Stores user defined data without taking ownership. Returns the previously stored value.
A string class which is a clone of std::string.
Definition: GCString.h:52
NodeList_t m_Invalidators
List of references to nodes which may invalidate this node.
Definition: Node.h:452
virtual void GetSelectingFeatures(FeatureList_t &) const =0
retrieve the group of features selecting this node
EYesNo m_IsStreamable
indicates if the node is streamable
Definition: Node.h:429
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeType
PropagateTerminals not run for node.
Definition: Node.h:443
~EntryMethodFinalizer()
Destructor calling.
Definition: Node.h:605
bool m_ListOfValidValuesCacheValid
true if the list of valid value is cached
Definition: Node.h:518
CBooleanPolyRef m_IsLocked
Reference to a Node, which indicates if the node is locked (i.e. not writable)
Definition: Node.h:402
void SetParent(INodePrivate *pParent)
Sets a parent : CAVE : for internal use only...
Definition: Node.h:268
enum GENAPI_NAMESPACE::_EAccessMode EAccessMode
access mode of a node
virtual INode * GetCastAlias() const =0
Retrieves the a node which describes the same feature so that it can be casted.
virtual NodeID_t GetNodeID()=0
Reads back the node id.
Object is not yet initialized.
Definition: Types.h:61
GENICAM_NAMESPACE::ILogger * m_pMiscLog
Logger for messages concerning miscellaneous access which does not fit to the other categories...
Definition: Node.h:645
virtual void SetInvalid(ESetInvalidMode simMode)=0
Invalidate the node resp. the node and all of its dependents.
GENICAM_NAMESPACE::gcstring m_DocuURL
A URL pointing or the documentation of this featrues.
Definition: Node.h:455
GENICAM_INTERFACE INode
Interface common to all nodes.
Definition: ICategory.h:51
FeatureList_t m_Selecting
List of selecting features.
Definition: Node.h:423
Used to ensure that PostSetValue() is called in any case.
Definition: Node.h:593
Read and Write.
Definition: Types.h:60
~PostSetValueFinalizer()
Destructor calling PostSetValue()
Definition: Node.h:570
Definition of interface INodeMapPrivate.
ESetInvalidMode
Three different modes of operation for INodePrivate::SetInvalid()
Definition: INodePrivate.h:91
void * UserData_t
Definition: IUserData.h:24
virtual bool Poll(int64_t ElapsedTime)=0
Invalidates the node if the polling time has elapsed.
int64_t m_PollingTime
recommended polling time in [ms]
Definition: Node.h:438
virtual void GetPropertyNames(GENICAM_NAMESPACE::gcstring_vector &PropertyNames) const =0
Returns a list of the names all properties set during initialization.
GENICAM_NAMESPACE::gcstring_vector m_PropertyNames
Helper: A list of all properties belonging to this node.
Definition: Node.h:461
virtual GENICAM_NAMESPACE::gcstring GetVendorName()=0
Get the vendor name.
PropagateTerminals is in progress for node, used for detecting cycles.
Definition: Node.h:444
virtual void FinalConstruct(bool DetermineDependencies)=0
finalizes construction of the node map
ETerminalPropagationState
States when propagating terminals.
Definition: Node.h:441
void push_back_unique(C &c, const V &v)
Add a value to container if not already present.
Definition: Node.h:69
void Value2String(T Value, GENICAM_NAMESPACE::gcstring &ValueStr)
Converts an T property to a string.
Definition: Value2String.h:62
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT ISelector
Interface for groups of features selected by a single one.
Definition: ISelector.h:49
Lexical analyzer for CIntSwissKnife.
Definition: Destructible.h:30
A lock class.
Definition: Synch.h:63
Definition of interface INodePrivate.
enum GENAPI_NAMESPACE::_EInterfaceType EInterfaceType
typedef for interface type
FeatureList_t m_Selected
List of selected features.
Definition: Node.h:420
virtual void GetTerminalNodes(NodeList_t &) const =0
Returns the list of all terminal nodes a write access to this node will eventually write to...
virtual CLock & GetLock() const =0
Returns the lock which guards the node map.
enum GENAPI_NAMESPACE::_ENameSpace ENameSpace
Defines if a node name is standard or custom.
INode * m_pCastAlias
Pointer to a Node, which describes the same feature as this one so that it can be casted...
Definition: Node.h:414
INodeMapPrivate * m_pNodeMapPrivate
Private cache for the INodeMapPrivate pointer.
Definition: Node.h:612
ECachingMode m_CachingMode
indicates that the node has changed
Definition: Node.h:417
enum GENAPI_NAMESPACE::_ELinkType ELinkType
typedef for link type


rc_genicam_api
Author(s): Heiko Hirschmueller
autogenerated on Sun Jun 18 2023 02:43:55