INodePrivate.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // (c) 2006 by Basler Vision Technologies
3 // Section: Vision Components
4 // Project: GenApi
5 // Author: MargretAlbrecht
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 //-----------------------------------------------------------------------------
32 #ifndef GENAPI_INODEPRIVATE_H
33 #define GENAPI_INODEPRIVATE_H
34 
35 #include "../GenApiDll.h"
36 #include "../Types.h"
37 #include "../INode.h"
38 #include "../INodeMap.h"
39 #include "NodeMapData/NodeData.h"
40 
41 #include <vector>
42 #include <set>
43 #include <list>
44 
45 struct NodeID_t;
46 class CProperty;
47 
48 namespace GENAPI_NAMESPACE
49 {
50  //*************************************************************
51  // INodePrivate interface
52  //*************************************************************
53 
56 
58  typedef std::vector< INodePrivate* > NodePrivateVector_t;
59 
64  GENICAM_INTERFACE GENAPI_DECL_ABSTRACT INodePrivate : public INode
65  {
66  /**** Methods to create nodes ****/
67 
69  virtual void Initialize(GENAPI_NAMESPACE::INodeMapPrivate* const pNodeMap, CNodeData::ENodeType_t NodeType, NodeID_t &NodeID) = 0;
70 
72  virtual CNodeData::ENodeType_t GetNodeType() = 0;
73 
75  virtual NodeID_t GetNodeID() = 0;
76 
78  virtual void FinalConstruct() = 0;
79 
81  virtual void SetProperty(CProperty &Property) = 0;
82 
84  // BEWARE: PropertyLsit contains pointers to CProperty objects on the heap. the caller is responsible for deleting them
85  // e.g. by calling CNodeData::FreePropertiesList( PropertyList )
86  virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList) const = 0;
87 
88  /**** Methods to handle callbacks ****/
89 
92  {
95  simDependentsAfterWrite, // !< Invalidate all of its dependents but not itself after a write of a terninal node
96  simDependents // !< Invalidate all of its dependents but not itself
97  };
98 
100  virtual void SetInvalid(ESetInvalidMode simMode) = 0;
101 
103  virtual void CollectCallbacksToFire(std::list<CNodeCallback*> &CallbacksToFire, bool allDependents = false) = 0;
104 
106  virtual bool IsTerminalNode() const = 0;
107 
109  virtual void GetTerminalNodes(NodeList_t &) const = 0;
110 
112 
115  virtual bool Poll( int64_t ElapsedTime ) = 0;
116 
117  };
118 
119 
120 }
121 
122 #endif // ifndef GENAPI_INODEPRIVATE_H
#define GENICAM_INTERFACE
Definition: GenICamFwd.h:33
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.
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
__int64 int64_t
Definition: config-win32.h:21
virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList) const =0
Retrieves a property from the node map itself.
Invalidate only the node itself.
Definition: INodePrivate.h:93
node_vector NodeList_t
a list of node references
Definition: INode.h:55
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeID_t NodeID
Invalidate the node and all of its dependents.
Definition: INodePrivate.h:94
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.
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT CNodeData::ENodeType_t NodeType
virtual NodeID_t GetNodeID()=0
Reads back the node id.
virtual void SetInvalid(ESetInvalidMode simMode)=0
Invalidate the node resp. the node and all of its dependents.
GENICAM_INTERFACE INode
Interface common to all nodes.
Definition: ICategory.h:51
ESetInvalidMode
Three different modes of operation for INodePrivate::SetInvalid()
Definition: INodePrivate.h:91
virtual bool Poll(int64_t ElapsedTime)=0
Invalidates the node if the polling time has elapsed.
virtual void FinalConstruct(bool DetermineDependencies)=0
finalizes construction of the node map
Lexical analyzer for CIntSwissKnife.
Definition: Autovector.h:48
virtual void GetTerminalNodes(NodeList_t &) const =0
Returns the list of all terminal nodes a write access to this node will eventually write to...


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