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 
62 namespace GENAPI_NAMESPACE
63 {
64  namespace detail
65  {
67  template< typename C, typename V>
68  void push_back_unique(C &c, const V &v)
69  {
70  if (std::find(c.begin(), c.end(), v) == c.end())
71  {
72  c.push_back(v);
73  }
74  }
75  }
76 
77  //*************************************************************
78  // CNodeImpl class
79  //*************************************************************
80 
85  class CNodeImpl : public INodePrivate, public ISelector, public IUserData
86  {
87  public:
88  //-------------------------------------------------------------
90 
91  CNodeImpl();
93 
95  virtual ~CNodeImpl();
97 
98  protected:
99  //-------------------------------------------------------------
101 
102  virtual EAccessMode InternalGetAccessMode() const;
104 
106  #pragma BullseyeCoverage off
108  {
109  return intfIBase;
110  }
111  #pragma BullseyeCoverage on
112 
114  EAccessMode InternalGetAccessMode(IBase* pValue) const;
116 
117  protected:
118  //-------------------------------------------------------------
120 
121  virtual GENICAM_NAMESPACE::gcstring InternalGetName(bool FullQualified=false) const;
123 
125  virtual GENAPI_NAMESPACE::ENameSpace InternalGetNameSpace()const;
126 
128  virtual EVisibility InternalGetVisibility() const;
129 
130  // Invalidate the node
131  virtual void InternalInvalidateNode( std::list<CNodeCallback*> &CallbacksToFire );
132 
134  virtual bool InternalIsCachable() const;
135 
137  virtual ECachingMode InternalGetCachingMode() const;
138 
140  virtual int64_t InternalGetPollingTime() const;
141 
143  virtual GENICAM_NAMESPACE::gcstring InternalGetToolTip() const;
144 
146  virtual GENICAM_NAMESPACE::gcstring InternalGetDescription() const;
147 
148  // Get node display name
149  virtual GENICAM_NAMESPACE::gcstring InternalGetDisplayName() const;
150 
152  virtual GENICAM_NAMESPACE::gcstring InternalGetDeviceName() const;
153 
155  virtual void InternalGetChildren(GENAPI_NAMESPACE::NodeList_t &Children, ELinkType LinkType) const;
156 
158 
159  virtual CallbackHandleType InternalRegisterCallback( CNodeCallback *pCallback );
160 
162 
165  virtual bool InternalDeregisterCallback( CallbackHandleType hCallback );
166 
168  virtual INodeMap* InternalGetNodeMap() const;
169 
171  virtual GENICAM_NAMESPACE::gcstring GetEventID() const;
172 
174  virtual bool IsStreamable() const;
175 
176  virtual void GetParents(GENAPI_NAMESPACE::NodeList_t &Parents) const;
177 
179  virtual void GetPropertyNames(GENICAM_NAMESPACE::gcstring_vector &PropertyNames) const;
180 
182 
183  virtual bool GetProperty(const GENICAM_NAMESPACE::gcstring& PropertyName, GENICAM_NAMESPACE::gcstring& ValueStr, GENICAM_NAMESPACE::gcstring& AttributeStr) const;
184 
186  virtual void ImposeAccessMode(EAccessMode ImposedAccessMode);
187 
189  virtual void ImposeVisibility(EVisibility ImposedVisibility);
190 
192  virtual INode* GetAlias() const;
193 
195  virtual INode* GetCastAlias() const;
196 
198  virtual void InternalCheckError() const;
199 
201  virtual GENICAM_NAMESPACE::gcstring InternalGetDocuURL() const;
202 
204  virtual bool InternalIsDeprecated() const;
205 
207  virtual bool IsFeature() const;
208 
210  virtual EYesNo InternalIsAccessModeCacheable() const;
211 
213 
214  inline bool IsAccessModeCached() const
215  {
216  if( _UndefinedAccesMode == m_AccessModeCache )
217  return false;
218 #pragma BullseyeCoverage off
219  if( _CycleDetectAccesMode == m_AccessModeCache )
220 #pragma BullseyeCoverage on
221  {
222  // the cycle is neutralized by making at least one node AccessMode cacheable
223  m_AccessModeCache = RW;
224  GCLOGWARN( m_pAccessLog, "InternalGetAccessMode : ReadCycle detected at = '%s'", m_Name.c_str() );
225  }
226  return true;
227  }
229 
230  public:
231  //-------------------------------------------------------------
233 
234  virtual void Initialize(GENAPI_NAMESPACE::INodeMapPrivate* const pNodeMap, CNodeData::ENodeType_t NodeType, NodeID_t &NodeID );
235  virtual CNodeData::ENodeType_t GetNodeType();
236  virtual NodeID_t GetNodeID();
237  virtual void FinalConstruct();
238  virtual void SetProperty( CProperty &Property );
239  virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList) const;
240  virtual void SetInvalid(ESetInvalidMode simMode);
241  virtual void CollectCallbacksToFire(std::list<CNodeCallback*> &CallbacksToFire, bool allDependents = false);
242  virtual bool IsTerminalNode() const;
243  virtual void GetTerminalNodes( GENAPI_NAMESPACE::NodeList_t& Terminals ) const;
244  virtual bool Poll( int64_t ElapsedTime );
246 
247  public:
248  //-------------------------------------------------------------
250 
251  virtual bool IsSelector() const;
252  virtual void GetSelectedFeatures( FeatureList_t& list ) const;
253  virtual void GetSelectingFeatures( FeatureList_t& ) const;
255 
256  public:
257 
260  {
261  return m_pNodeMap;
262  }
263 
265  inline void SetParent( INodePrivate *pParent )
266  {
267  detail::push_back_unique(m_Parents, pParent);
268  }
269 
270  // 1 : use macro for speed
271  // 0 : used function for debugging
272 #if 0
273 
274 # define ADD_ORPHAN_CHILD( PropertyID, Property ) \
275  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID( Property.NodeID() ); \
276  if( CPropertyID::IsInvalidatingPointer(PropertyID) )\
277  { \
278  detail::push_back_unique(m_InvalidatingChildren, pNode); \
279  if( CPropertyID::IsReadingPointer(PropertyID) ) \
280  { \
281  detail::push_back_unique(m_ReadingChildren, pNode); \
282  if( CPropertyID::IsWritingPointer(PropertyID) ) \
283  { \
284  detail::push_back_unique(m_WritingChildren, pNode); \
285  } \
286  } \
287  }
288 
289  // the compiler will optimize the if() statements away if PropertyID is a constant
290 # define ADD_CHILD( PropertyID, Property ) \
291  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID( Property.NodeID() ); \
292  if( CPropertyID::IsInvalidatingPointer(PropertyID) )\
293  { \
294  detail::push_back_unique(m_InvalidatingChildren, pNode);\
295  dynamic_cast<CNodeImpl*>(pNode)->SetParent( this );\
296  if( CPropertyID::IsReadingPointer(PropertyID) ) \
297  { \
298  detail::push_back_unique(m_ReadingChildren, pNode);\
299  if( CPropertyID::IsWritingPointer(PropertyID) ) \
300  { \
301  detail::push_back_unique(m_WritingChildren, pNode); \
302  } \
303  } \
304  }
305 
306 #else
307 # define ADD_ORPHAN_CHILD( PropertyID, Property ) \
308  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID(Property.NodeID()); \
309  add_orphan_child( PropertyID, Property, pNode );
310 
311 # define ADD_CHILD( PropertyID, Property ) \
312  INodePrivate *pNode = dynamic_cast<CNodeMap*>(m_pNodeMap)->_GetNodeByID(Property.NodeID()); \
313  add_child( PropertyID, Property, pNode );
314 
315  // This is a helper function performing the same tasks as the macro above
316  // In contrast to the macro however you can set breakpoint here :-)
317  void add_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &/*Property*/, INodePrivate *pNode)
318  {
319  if (CPropertyID::IsInvalidatingPointer(PropertyID))
320  {
321  detail::push_back_unique(m_InvalidatingChildren, pNode);
322  dynamic_cast<CNodeImpl*>(pNode)->SetParent(this); // this is not present in add_orphan_child
323  if (CPropertyID::IsReadingPointer(PropertyID))
324  {
325  detail::push_back_unique(m_ReadingChildren, pNode);
326  if (CPropertyID::IsWritingPointer(PropertyID))
327  {
328  detail::push_back_unique(m_WritingChildren, pNode);
329  }
330  }
331  }
332  }
333 
334  void add_orphan_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &/*Property*/, INodePrivate *pNode)
335  {
336  if (CPropertyID::IsInvalidatingPointer(PropertyID))
337  {
338  detail::push_back_unique(m_InvalidatingChildren, pNode);
339  if (CPropertyID::IsReadingPointer(PropertyID))
340  {
341  detail::push_back_unique(m_ReadingChildren, pNode);
342  if (CPropertyID::IsWritingPointer(PropertyID))
343  {
344  detail::push_back_unique(m_WritingChildren, pNode);
345  }
346  }
347  }
348  }
349 #endif
350  private:
351  //-------------------------------------------------------------
352  // ! \name Interface IUserData
354  UserData_t GetUserData() const;
355  UserData_t SetUserData( UserData_t userdata );
357  protected:
358  //-------------------------------------------------------------
360 
362  std::string nodetype;
363  Value2String(m_NodeTypeEnum, nodetype);
364 
365  return nodetype.c_str();
366  }
367 
370 
373 
376 
379 
382 
385 
388 
391 
394 
397 
400 
403 
406 
409 
412 
415 
417  FeatureList_t m_Selected;
418 
420  FeatureList_t m_Selecting;
421 
424 
427 
430 
433 
436 
439  {
442  eTerminalPropagationDone
443  };
444 
447 
450 
453 
456 
458  GENICAM_NAMESPACE::gcstring_vector m_PropertyNames;
459 
462 
464 
465  protected:
466  //-------------------------------------------------------------
468 
469  NodePrivateVector_t m_Parents;
471 
475 
479 
483 
487 
491 
495 
496  protected:
497  //-------------------------------------------------------------
499 
500  mutable ECachingMode m_CachingModeCache;
502 
505 
506  inline void CacheAccessModeIfPossible( EAccessMode AccessMode ) const
507  {
508  m_AccessModeCache = ( Yes == InternalIsAccessModeCacheable() ) ? AccessMode : _UndefinedAccesMode;
509  }
510 
512  mutable bool m_ValueCacheValid;
513 
516 
518  virtual bool InternalIsValueCacheValid() const;
519 
522 
524 
525  protected:
526  //-------------------------------------------------------------
528 
529  INodeMapPrivate* m_pNodeMap;
531 
534 
536  typedef AutoLock Lock;
537 
539  CLock& GetLock() const;
540 
542  Counter& GetBathometer() const;
543 
545  void PreSetValue();
546 
548  void PostSetValue( std::list<CNodeCallback*> &CallbacksToFire );
549 
552 
555  {
556  public:
558  PostSetValueFinalizer(CNodeImpl* pThis, std::list<CNodeCallback*> &CallbacksToFire ) :
559  m_pThis( pThis ),
560  m_CallbacksToFire( CallbacksToFire )
561  {}
562 
565  {
566  m_pThis->PostSetValue( m_CallbacksToFire );
567  }
568 
571 
573  std::list<CNodeCallback*> &m_CallbacksToFire;
574 
575  private:
577  // \{
580  // \}
581  };
582 
584  std::list<CNodeCallback*> m_Callbacks;
585 
588  {
589  public:
591  EntryMethodFinalizer(const INodePrivate* pThis, EMethod EntryMethod, bool IgnoreCache = false )
592  {
593  assert(pThis);
594  m_pNodeMapPrivate = dynamic_cast<INodeMapPrivate*>( pThis->GetNodeMap() );
595  m_pNodeMapPrivate->SetEntryPoint( EntryMethod, pThis, IgnoreCache );
596  }
597 
600  {
601  m_pNodeMapPrivate->ResetEntryPoint();
602  }
603 
604  private:
607  };
608 
610  GENICAM_NAMESPACE::gcstring GetQualifiedName(GENICAM_NAMESPACE::gcstring Name, ENameSpace NameSpace) const;
611 
613 
614  //-------------------------------------------------------------
616 
617  // for safety reasons please keep these member variables at the
618  // end of the class' memory layout
619 
622 
625 
628 
631 
634 
637 
640 
642 
643 
645  NodeID_t m_NodeID;
646 
647  CNodeData::ENodeType_t m_NodeTypeEnum;
648 
650 
654 
655  private:
656 #if defined( _WIN32 ) && !defined( PHARLAP_WIN32 )
657  typedef std::wstring string_t;
658  typedef std::wstring::size_type size_type;
659  typedef std::wostringstream ostringstream_t;
660  typedef wchar_t char_t;
661  #define QUALIFY_LITERAL( x ) _L( x )
662  #define _L( x ) L ## x
663  #define GET_MODULE_FILE_NAME GetModuleFileNameW
664  #define GET_CSTR( x ) x.w_str().c_str()
665  #define GET_LOCALE_INFO GetLocaleInfoW
666 #else
667  typedef std::string string_t;
668  typedef std::string::size_type size_type;
670  typedef char char_t;
671  #define QUALIFY_LITERAL( x ) x
672  #define GET_MODULE_FILE_NAME GetModuleFileName
673  #define GET_CSTR( x ) x.c_str()
674  #define GET_LOCALE_INFO GetLocaleInfo
675 #endif
676 
677  static const size_t MaxPath;
678  void GetNodeName( string_t& VariableContent ) const;
679  void GetStringStreamContent( const ostringstream_t& Content, string_t& VariableContent ) const;
680  void GetVendorName( string_t& VariableContent ) const;
681  void GetModelName( string_t& VariableContent ) const;
682  void GetStandardNameSpace( string_t& VariableContent ) const;
683  void GetNodeValue( const CValuePtr& ptrValue, CNodeImpl::string_t& VariableContent ) const;
684 
685  };
686 
689 
691  void DeleteDoubleCallbacks( std::list<CNodeCallback*> &CallbackList );
692 
693 }
694 
695 #endif // ifndef GENAPI_NODE_H
void add_orphan_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &, INodePrivate *pNode)
Definition: Node.h:334
EVisibility m_ImposedVisibility
Visibility imposed to the natural visibility of the node.
Definition: Node.h:432
Definition of value2string and string2value functions.
std::list< CNodeCallback * > m_Callbacks
List of callbacks.
Definition: Node.h:584
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_NAMESPACE::gcstring m_ToolTip
The ToolTip for the node.
Definition: Node.h:384
GENICAM_NAMESPACE::gcstring m_Name
The name of the node.
Definition: Node.h:369
std::string string_t
Definition: Node.h:667
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:551
EYesNo m_AccessModeCacheability
indicates if the AccessMode is cacheable
Definition: Node.h:521
GENICAM_NAMESPACE::gcstring m_Description
The Description of the node.
Definition: Node.h:387
INodeMapPrivate * GetNodeMapPrivate()
Retrieves the INodeMapPrivate interface.
Definition: Node.h:259
NodeID_t m_NodeID
The node&#39;s ID.
Definition: Node.h:645
LOG4CPP_NS::Category * m_pMiscLog
Logger for messages concerning miscellaneous access which does not fit to the other categories...
Definition: Node.h:639
interface GENAPI_DECL_ABSTRACT INodePrivate
Interface including the methods for node construction common to all nodes.
Definition: INodePrivate.h:69
CBooleanPolyRef m_IsImplemented
Reference to a Node, which indicates if the node is implemented.
Definition: Node.h:393
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.
Definition: Node.h:486
std::string::size_type size_type
Definition: Node.h:668
bool m_ValueCacheValid
true if the value cache is valid
Definition: Node.h:512
IBase interface.
Definition: Types.h:192
#define GCLOGWARN(cat,...)
Definition: CLog.h:165
ETerminalPropagationState m_propagationState
Current state for propagating terminals.
Definition: Node.h:446
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:573
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:214
ENameSpace m_NameSpace
The namespace of the node.
Definition: Node.h:375
EYesNo m_IsFeature
indicates that the node is a feature that is reachable from the Root node via categories ...
Definition: Node.h:461
EVisibility m_Visibility
recommended visibility;
Definition: Node.h:390
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:396
CBooleanPolyRef m_BlockPolling
Reference to a Node, which indicates if the node is not cached.
Definition: Node.h:402
__int64 int64_t
Definition: config-win32.h:21
NodePrivateVector_t m_VariableChildren
All node use as variable by this node.
Definition: Node.h:493
GENICAM_NAMESPACE::gcstring m_Extension
The metadata from the extension.
Definition: Node.h:372
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:378
interface GENAPI_DECL_ABSTRACT INodeMap
Interface to access the node map.
Definition: INodeMap.h:56
virtual bool IsFeature() const =0
True if the node can be reached via category nodes from a category node named "Root".
interface GENAPI_DECL_ABSTRACT IEnumeration
Interface for enumeration properties.
Definition: IEnumeration.h:60
LOG4CPP_NS_BEGIN class LOG4CPP_EXPORT Category
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:455
callback body instance for INode pointers
Definition: NodeCallback.h:55
NodePrivateVector_t m_AllTerminalNodes
All indirectly connected terminal nodes For details see GenICam wiki : GenApi/SoftwareArchitecture/No...
Definition: Node.h:490
CNodeData::ENodeType_t m_NodeTypeEnum
Definition: Node.h:647
EntryMethodFinalizer(const INodePrivate *pThis, EMethod EntryMethod, bool IgnoreCache=false)
Constructor.
Definition: Node.h:591
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:478
Used to ensure that PostSetValue() is called in any case.
Definition: Node.h:554
GENICAM_NAMESPACE::gcstring m_EventID
The EventID.
Definition: Node.h:423
LOG4CPP_NS::Category * m_pValueLog
Logger for messages concerning the getting and setting values.
Definition: Node.h:624
interface GENAPI_DECL_ABSTRACT IBase
Base interface common to all nodes.
Definition: IBase.h:55
UserData_t m_pUserData
Storage of user defined data.
Definition: Node.h:653
node_vector NodeList_t
a list of node references
Definition: INode.h:55
interface GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeID_t NodeID
CNodeImpl * m_pThis
pointer to owner object
Definition: Node.h:570
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:408
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
interface GENAPI_DECL_ABSTRACT ISelector
Interface for groups of features selected by a single one.
Definition: ISelector.h:49
NodePrivateVector_t m_ReadingChildren
all nodes which can be read from For details see GenICam wiki : GenApi/SoftwareArchitecture/NodeDepen...
Definition: Node.h:474
std::ostringstream ostringstream_t
Definition: Node.h:669
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.
static const size_t MaxPath
Definition: Node.h:677
LOG4CPP_NS::Category * m_pPreProcLog
Logger for things done during pre-processing of the node map, e.g. determining dependencies.
Definition: Node.h:636
virtual EInterfaceType InternalGetPrincipalInterfaceType() const
Implementation of IBase::GetPrincipalInterfaceType()
Definition: Node.h:107
interface GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeType
IEnumeration * m_pError
Pointer to a Error class.
Definition: Node.h:405
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:482
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.
LOG4CPP_NS::Category * m_pAccessLog
Logger for messages concerning the AccessMode.
Definition: Node.h:621
void add_child(CPropertyID::EProperty_ID_t PropertyID, CProperty &, INodePrivate *pNode)
Definition: Node.h:317
interface GENAPI_DECL_ABSTRACT IUserData
Interface to manage user data stored in nodes or nodemaps.
Definition: IUserData.h:34
int64_t m_ElapsedTime
time elapsed since the last poll
Definition: Node.h:533
AutoLock Lock
shortcut for the lock type
Definition: Node.h:536
GENICAM_NAMESPACE::gcstring m_DisplayName
The display name string of the node.
Definition: Node.h:381
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:85
PostSetValueFinalizer(CNodeImpl *pThis, std::list< CNodeCallback * > &CallbacksToFire)
Constructor.
Definition: Node.h:558
LOG4CPP_NS::Category * m_pRangeLog
Logger for messages concerning the range check.
Definition: Node.h:627
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.
interface GENAPI_DECL_ABSTRACT INodeMapPrivate
NodeMap functions used for initialization.
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:429
EAccessMode m_AccessModeCache
cache access mode
Definition: Node.h:504
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:449
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:426
PropagateTerminals not run for node.
Definition: Node.h:440
~EntryMethodFinalizer()
Destructor calling.
Definition: Node.h:599
bool m_ListOfValidValuesCacheValid
true if the list of valid value is cached
Definition: Node.h:515
CBooleanPolyRef m_IsLocked
Reference to a Node, which indicates if the node is locked (i.e. not writable)
Definition: Node.h:399
void SetParent(INodePrivate *pParent)
Sets a parent : CAVE : for internal use only...
Definition: Node.h:265
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
virtual void SetInvalid(ESetInvalidMode simMode)=0
Invalidate the node resp. the node and all of its dependents.
LOG4CPP_NS::Category * m_pCacheLog
Logger for messages concerning the caching access.
Definition: Node.h:633
GENICAM_NAMESPACE::gcstring m_DocuURL
A URL pointing or the documentation of this featrues.
Definition: Node.h:452
void CacheAccessModeIfPossible(EAccessMode AccessMode) const
Definition: Node.h:506
FeatureList_t m_Selecting
List of selecting features.
Definition: Node.h:420
Used to ensure that PostSetValue() is called in any case.
Definition: Node.h:587
LOG4CPP_NS::Category * m_pPortLog
Logger for messages concerning the port access.
Definition: Node.h:630
GENICAM_NAMESPACE::gcstring GetNodeType() const
Definition: Node.h:361
Read and Write.
Definition: Types.h:60
~PostSetValueFinalizer()
Destructor calling PostSetValue()
Definition: Node.h:564
Definition of interface INodeMapPrivate.
interface GENAPI_DECL_ABSTRACT INode
Interface common to all nodes.
Definition: INode.h:60
ESetInvalidMode
Three different modes of operation for INodePrivate::SetInvalid()
Definition: INodePrivate.h:91
Declaration of CNodeMap.
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:435
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:458
virtual GENICAM_NAMESPACE::gcstring GetVendorName()=0
Get the vendor name.
PropagateTerminals is in progress for node, used for detecting cycles.
Definition: Node.h:441
virtual void FinalConstruct(bool DetermineDependencies)=0
finalizes construction of the node map
ETerminalPropagationState
States when propagating terminals.
Definition: Node.h:438
void push_back_unique(C &c, const V &v)
Add a value to container if not already present.
Definition: Node.h:68
void Value2String(T Value, GENICAM_NAMESPACE::gcstring &ValueStr)
Converts an T property to a string.
Definition: Value2String.h:62
Part of the generic device API.
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:417
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:411
INodeMapPrivate * m_pNodeMapPrivate
Private cache for the INodeMapPrivate pointer.
Definition: Node.h:606
ECachingMode m_CachingMode
indicates that the node has changed
Definition: Node.h:414
enum GENAPI_NAMESPACE::_ELinkType ELinkType
typedef for link type


rc_genicam_api
Author(s): Heiko Hirschmueller
autogenerated on Thu Jun 6 2019 19:10:54