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) const;
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);
243  virtual bool IsTerminalNode() const;
244  virtual void GetTerminalNodes( GENAPI_NAMESPACE::NodeList_t& Terminals ) const;
245  virtual bool Poll( int64_t ElapsedTime );
247 
248  public:
249  //-------------------------------------------------------------
251 
252  virtual bool IsSelector() const;
253  virtual void GetSelectedFeatures( FeatureList_t& list ) const;
254  virtual void GetSelectingFeatures( FeatureList_t& ) const;
256 
257  public:
258 
261  {
262  return m_pNodeMap;
263  }
264 
266  inline void SetParent( INodePrivate *pParent )
267  {
268  detail::push_back_unique(m_Parents, pParent);
269  }
270 
271  // 1 : use macro for speed
272  // 0 : used function for debugging
273 #if 0
274 
275 # define ADD_ORPHAN_CHILD( PropertyID, Property ) \
276  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID( Property.NodeID() ); \
277  if( CPropertyID::IsInvalidatingPointer(PropertyID) )\
278  { \
279  detail::push_back_unique(m_InvalidatingChildren, pNode); \
280  if( CPropertyID::IsReadingPointer(PropertyID) ) \
281  { \
282  detail::push_back_unique(m_ReadingChildren, pNode); \
283  if( CPropertyID::IsWritingPointer(PropertyID) ) \
284  { \
285  detail::push_back_unique(m_WritingChildren, pNode); \
286  } \
287  } \
288  }
289 
290  // the compiler will optimize the if() statements away if PropertyID is a constant
291 # define ADD_CHILD( PropertyID, Property ) \
292  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID( Property.NodeID() ); \
293  if( CPropertyID::IsInvalidatingPointer(PropertyID) )\
294  { \
295  detail::push_back_unique(m_InvalidatingChildren, pNode);\
296  dynamic_cast<CNodeImpl*>(pNode)->SetParent( this );\
297  if( CPropertyID::IsReadingPointer(PropertyID) ) \
298  { \
299  detail::push_back_unique(m_ReadingChildren, pNode);\
300  if( CPropertyID::IsWritingPointer(PropertyID) ) \
301  { \
302  detail::push_back_unique(m_WritingChildren, pNode); \
303  } \
304  } \
305  }
306 
307 #else
308 # define ADD_ORPHAN_CHILD( PropertyID, Property ) \
309  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID(Property.NodeID()); \
310  add_orphan_child( PropertyID, Property, pNode );
311 
312 # define ADD_CHILD( PropertyID, Property ) \
313  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID(Property.NodeID()); \
314  add_child( PropertyID, Property, pNode );
315 
316  // This is a helper function performing the same tasks as the macro above
317  // In contrast to the macro however you can set breakpoint here :-)
318  void add_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &/*Property*/, INodePrivate *pNode)
319  {
320  if (CPropertyID::IsInvalidatingPointer(PropertyID))
321  {
322  detail::push_back_unique(m_InvalidatingChildren, pNode);
323  dynamic_cast<CNodeImpl*>(pNode)->SetParent(this); // this is not present in add_orphan_child
324  if (CPropertyID::IsReadingPointer(PropertyID))
325  {
326  detail::push_back_unique(m_ReadingChildren, pNode);
327  if (CPropertyID::IsWritingPointer(PropertyID))
328  {
329  detail::push_back_unique(m_WritingChildren, pNode);
330  }
331  }
332  }
333  }
334 
335  void add_orphan_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &/*Property*/, INodePrivate *pNode)
336  {
337  if (CPropertyID::IsInvalidatingPointer(PropertyID))
338  {
339  detail::push_back_unique(m_InvalidatingChildren, pNode);
340  if (CPropertyID::IsReadingPointer(PropertyID))
341  {
342  detail::push_back_unique(m_ReadingChildren, pNode);
343  if (CPropertyID::IsWritingPointer(PropertyID))
344  {
345  detail::push_back_unique(m_WritingChildren, pNode);
346  }
347  }
348  }
349  }
350 #endif
351  private:
352  //-------------------------------------------------------------
353  // ! \name Interface IUserData
355  UserData_t GetUserData() const;
356  UserData_t SetUserData( UserData_t userdata );
358  protected:
359  //-------------------------------------------------------------
361 
363  std::string nodetype;
364  Value2String(m_NodeTypeEnum, nodetype);
365 
366  return nodetype.c_str();
367  }
368 
371 
374 
377 
380 
383 
386 
389 
392 
395 
398 
401 
404 
407 
410 
413 
416 
418  FeatureList_t m_Selected;
419 
421  FeatureList_t m_Selecting;
422 
425 
428 
431 
434 
437 
440  {
443  eTerminalPropagationDone
444  };
445 
448 
451 
454 
457 
459  GENICAM_NAMESPACE::gcstring_vector m_PropertyNames;
460 
463 
465 
466  protected:
467  //-------------------------------------------------------------
469 
470  NodePrivateVector_t m_Parents;
472 
476 
480 
484 
488 
492 
496 
497  protected:
498  //-------------------------------------------------------------
500 
501  mutable ECachingMode m_CachingModeCache;
503 
506 
507  inline void CacheAccessModeIfPossible( EAccessMode AccessMode ) const
508  {
509  m_AccessModeCache = ( Yes == InternalIsAccessModeCacheable() ) ? AccessMode : _UndefinedAccesMode;
510  }
511 
513  mutable bool m_ValueCacheValid;
514 
517 
519  virtual bool InternalIsValueCacheValid() const;
520 
523 
525 
526  protected:
527  //-------------------------------------------------------------
529 
530  INodeMapPrivate* m_pNodeMap;
532 
535 
537  typedef AutoLock Lock;
538 
540  CLock& GetLock() const;
541 
543  Counter& GetBathometer() const;
544 
546  void PreSetValue();
547 
549  void PostSetValue( std::list<CNodeCallback*> &CallbacksToFire );
550 
553 
556 
559  {
560  public:
562  PostSetValueFinalizer(CNodeImpl* pThis, std::list<CNodeCallback*> &CallbacksToFire ) :
563  m_pThis( pThis ),
564  m_CallbacksToFire( CallbacksToFire )
565  {}
566 
569  {
570  m_pThis->PostSetValue( m_CallbacksToFire );
571  }
572 
575 
577  std::list<CNodeCallback*> &m_CallbacksToFire;
578 
579  private:
581  // \{
584  // \}
585  };
586 
588  std::list<CNodeCallback*> m_Callbacks;
589 
592  {
593  public:
595  EntryMethodFinalizer(const INodePrivate* pThis, EMethod EntryMethod, bool IgnoreCache = false )
596  {
597  assert(pThis);
598  m_pNodeMapPrivate = dynamic_cast<INodeMapPrivate*>( pThis->GetNodeMap() );
599  m_pNodeMapPrivate->SetEntryPoint( EntryMethod, pThis, IgnoreCache );
600  }
601 
604  {
605  m_pNodeMapPrivate->ResetEntryPoint();
606  }
607 
608  private:
611  };
612 
614  GENICAM_NAMESPACE::gcstring GetQualifiedName(GENICAM_NAMESPACE::gcstring Name, ENameSpace NameSpace) const;
615 
617 
618  //-------------------------------------------------------------
620 
621  // for safety reasons please keep these member variables at the
622  // end of the class' memory layout
623 
626 
629 
632 
635 
638 
641 
644 
646 
647 
649  NodeID_t m_NodeID;
650 
651  CNodeData::ENodeType_t m_NodeTypeEnum;
652 
654 
658 
659  private:
660 #if defined( _WIN32 ) && !defined( PHARLAP_WIN32 )
661  typedef std::wstring string_t;
662  typedef std::wstring::size_type size_type;
663  typedef std::wostringstream ostringstream_t;
664  typedef wchar_t char_t;
665  #define QUALIFY_LITERAL( x ) _L( x )
666  #define _L( x ) L ## x
667  #define GET_MODULE_FILE_NAME GetModuleFileNameW
668  #define GET_CSTR( x ) x.w_str().c_str()
669  #define GET_LOCALE_INFO GetLocaleInfoW
670 #else
671  typedef std::string string_t;
672  typedef std::string::size_type size_type;
674  typedef char char_t;
675  #define QUALIFY_LITERAL( x ) x
676  #define GET_MODULE_FILE_NAME GetModuleFileName
677  #define GET_CSTR( x ) x.c_str()
678  #define GET_LOCALE_INFO GetLocaleInfo
679 #endif
680 
681  static const size_t MaxPath;
682  void GetNodeName( string_t& VariableContent ) const;
683  void GetStringStreamContent( const ostringstream_t& Content, string_t& VariableContent ) const;
684  void GetVendorName( string_t& VariableContent ) const;
685  void GetModelName( string_t& VariableContent ) const;
686  void GetStandardNameSpace( string_t& VariableContent ) const;
687  void GetNodeValue( const CValuePtr& ptrValue, CNodeImpl::string_t& VariableContent ) const;
688 
689  };
690 
693 
695  void DeleteDoubleCallbacks( std::list<CNodeCallback*> &CallbackList );
696 
697 }
698 
699 #endif // ifndef GENAPI_NODE_H
void add_orphan_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &, INodePrivate *pNode)
Definition: Node.h:335
EVisibility m_ImposedVisibility
Visibility imposed to the natural visibility of the node.
Definition: Node.h:433
Definition of value2string and string2value functions.
std::list< CNodeCallback * > m_Callbacks
List of callbacks.
Definition: Node.h:588
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:385
GENICAM_NAMESPACE::gcstring m_Name
The name of the node.
Definition: Node.h:370
std::string string_t
Definition: Node.h:671
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:552
EYesNo m_AccessModeCacheability
indicates if the AccessMode is cacheable
Definition: Node.h:522
GENICAM_NAMESPACE::gcstring m_Description
The Description of the node.
Definition: Node.h:388
INodeMapPrivate * GetNodeMapPrivate()
Retrieves the INodeMapPrivate interface.
Definition: Node.h:260
NodeID_t m_NodeID
The node&#39;s ID.
Definition: Node.h:649
CBooleanPolyRef m_IsImplemented
Reference to a Node, which indicates if the node is implemented.
Definition: Node.h:394
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:487
std::string::size_type size_type
Definition: Node.h:672
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:625
bool m_ValueCacheValid
true if the value cache is valid
Definition: Node.h:513
IBase interface.
Definition: Types.h:192
#define GCLOGWARN(cat,...)
Definition: CLog.h:131
ETerminalPropagationState m_propagationState
Current state for propagating terminals.
Definition: Node.h:447
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:577
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
bool IsAccessModeCached() const
returns true, if the AccessModeCache is valid
Definition: Node.h:215
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:376
EYesNo m_IsFeature
indicates that the node is a feature that is reachable from the Root node via categories ...
Definition: Node.h:462
EVisibility m_Visibility
recommended visibility;
Definition: Node.h:391
virtual void operator=(bool Value)
Set node value.
Definition: IBoolean.h:64
CBooleanPolyRef m_IsAvailable
Reference to a Node, which indicates if the node is available.
Definition: Node.h:397
CBooleanPolyRef m_BlockPolling
Reference to a Node, which indicates if the node is not cached.
Definition: Node.h:403
__int64 int64_t
Definition: config-win32.h:21
NodePrivateVector_t m_VariableChildren
All node use as variable by this node.
Definition: Node.h:494
GENICAM_NAMESPACE::gcstring m_Extension
The metadata from the extension.
Definition: Node.h:373
GENICAM_NAMESPACE::ILogger * m_pCacheLog
Logger for messages concerning the caching access.
Definition: Node.h:637
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:379
GENICAM_NAMESPACE::ILogger * m_pPortLog
Logger for messages concerning the port access.
Definition: Node.h:634
virtual bool IsFeature() const =0
True if the node can be reached via category nodes from a category node named "Root".
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:456
callback body instance for INode pointers
Definition: NodeCallback.h:55
GENICAM_INTERFACE INodeMap
Interface to access the node map.
Definition: INode.h:52
NodePrivateVector_t m_AllTerminalNodes
All indirectly connected terminal nodes For details see GenICam wiki : GenApi/SoftwareArchitecture/No...
Definition: Node.h:491
GENICAM_NAMESPACE::ILogger * m_pRangeLog
Logger for messages concerning the range check.
Definition: Node.h:631
CNodeData::ENodeType_t m_NodeTypeEnum
Definition: Node.h:651
EntryMethodFinalizer(const INodePrivate *pThis, EMethod EntryMethod, bool IgnoreCache=false)
Constructor.
Definition: Node.h:595
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:479
Used to ensure that PostSetValue() is called in any case.
Definition: Node.h:558
GENICAM_NAMESPACE::gcstring m_EventID
The EventID.
Definition: Node.h:424
UserData_t m_pUserData
Storage of user defined data. Ownership remains by the user!. Use IUserData interface to access the d...
Definition: Node.h:657
node_vector NodeList_t
a list of node references
Definition: INode.h:55
CNodeImpl * m_pThis
pointer to owner object
Definition: Node.h:574
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:409
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:475
std::ostringstream ostringstream_t
Definition: Node.h:673
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:681
GENICAM_NAMESPACE::ILogger * m_pPreProcLog
Logger for things done during pre-processing of the node map, e.g. determining dependencies.
Definition: Node.h:640
virtual EInterfaceType InternalGetPrincipalInterfaceType() const
Implementation of IBase::GetPrincipalInterfaceType()
Definition: Node.h:108
IEnumeration * m_pError
Pointer to a Error class.
Definition: Node.h:406
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:483
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:318
GENICAM_NAMESPACE::ILogger * m_pValueLog
Logger for messages concerning the getting and setting values.
Definition: Node.h:628
int64_t m_ElapsedTime
time elapsed since the last poll
Definition: Node.h:534
bool m_TerminalNodeWritten
indicates that this terminal node was written and not yet invalidated.
Definition: Node.h:555
AutoLock Lock
shortcut for the lock type
Definition: Node.h:537
GENICAM_NAMESPACE::gcstring m_DisplayName
The display name string of the node.
Definition: Node.h:382
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
PostSetValueFinalizer(CNodeImpl *pThis, std::list< CNodeCallback * > &CallbacksToFire)
Constructor.
Definition: Node.h:562
intptr_t CallbackHandleType
the callback handle for nodes
Definition: INode.h:58
virtual void CollectCallbacksToFire(std::list< CNodeCallback * > &CallbacksToFire, bool allDependents=false)=0
Update the registered callbacks.
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:430
EAccessMode m_AccessModeCache
cache access mode
Definition: Node.h:505
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:450
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:427
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeType
PropagateTerminals not run for node.
Definition: Node.h:441
~EntryMethodFinalizer()
Destructor calling.
Definition: Node.h:603
bool m_ListOfValidValuesCacheValid
true if the list of valid value is cached
Definition: Node.h:516
CBooleanPolyRef m_IsLocked
Reference to a Node, which indicates if the node is locked (i.e. not writable)
Definition: Node.h:400
void SetParent(INodePrivate *pParent)
Sets a parent : CAVE : for internal use only...
Definition: Node.h:266
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:643
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:453
void CacheAccessModeIfPossible(EAccessMode AccessMode) const
Definition: Node.h:507
GENICAM_INTERFACE INode
Interface common to all nodes.
Definition: ICategory.h:51
FeatureList_t m_Selecting
List of selecting features.
Definition: Node.h:421
Used to ensure that PostSetValue() is called in any case.
Definition: Node.h:591
GENICAM_NAMESPACE::gcstring GetNodeType() const
Definition: Node.h:362
Read and Write.
Definition: Types.h:60
~PostSetValueFinalizer()
Destructor calling PostSetValue()
Definition: Node.h:568
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:436
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:459
virtual GENICAM_NAMESPACE::gcstring GetVendorName()=0
Get the vendor name.
PropagateTerminals is in progress for node, used for detecting cycles.
Definition: Node.h:442
virtual void FinalConstruct(bool DetermineDependencies)=0
finalizes construction of the node map
ETerminalPropagationState
States when propagating terminals.
Definition: Node.h:439
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: Autovector.h:48
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:418
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.
void DeleteDoubleCallbacks(std::list< CNodeCallback * > &CallbackList)
deletes double callbacks from list
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:412
INodeMapPrivate * m_pNodeMapPrivate
Private cache for the INodeMapPrivate pointer.
Definition: Node.h:610
ECachingMode m_CachingMode
indicates that the node has changed
Definition: Node.h:415
enum GENAPI_NAMESPACE::_ELinkType ELinkType
typedef for link type


rc_genicam_api
Author(s): Heiko Hirschmueller
autogenerated on Wed Mar 17 2021 02:48:41