GenApi 3.5.1
ICommand.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// (c) 2006 by Basler Vision Technologies
3// Author: Hartmut Nebelung
4//
5// License: This file is published under the license of the EMVA GenICam Standard Group.
6// A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
7// If for some reason you are missing this file please contact the EMVA or visit the website
8// (http://www.genicam.org) for a full copy.
9//
10// THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
11// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
12// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
13// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
14// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
15// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
20// POSSIBILITY OF SUCH DAMAGE.
21//
22//-----------------------------------------------------------------------------
29#ifndef GENAPI_ICOMMAND_H
30#define GENAPI_ICOMMAND_H
31
32#include <GenApi/GenApiDll.h>
33#include <GenApi/Types.h>
34#include <GenApi/IValue.h>
35
36#ifdef _MSC_VER
37# pragma warning ( push )
38# pragma warning ( disable : 4251 ) // XXX needs to have dll-interface to be used by clients of class YYY
39#endif
40
41namespace GENAPI_NAMESPACE
42{
43 //*************************************************************
44 // ICommand interface
45 //*************************************************************
46
49 GENICAM_INTERFACE GENAPI_DECL_ABSTRACT ICommand : virtual public IValue
50 {
51 public:
52
54
57 virtual void Execute(bool Verify = true) = 0;
58
60 virtual void operator()() = 0;
61
63
67 virtual bool IsDone(bool Verify = true) = 0;
68
69
70 };
71
72
73 //*************************************************************
74 // CCommandRef class
75 //*************************************************************
76
77#ifndef DOXYGEN_IGNORE
78
84 template <class T>
85 class CCommandRefT : public CValueRefT<T>
86 {
87 typedef CValueRefT<T> ref;
88
89 public:
90 /*--------------------------------------------------------*/
91 // ICommand
92 /*--------------------------------------------------------*/
93
95 virtual void Execute(bool Verify = true)
96 {
97 if(!ref::m_Ptr)
98 throw ACCESS_EXCEPTION("Feature not present (reference not valid)");
99 ref::m_Ptr->Execute(Verify);
100 }
101
103 virtual void operator()()
104 {
105 if(!ref::m_Ptr)
106 throw ACCESS_EXCEPTION("Feature not present (reference not valid)");
107 ref::m_Ptr->operator()();
108 }
109
111 virtual bool IsDone(bool Verify = true)
112 {
113 if(!ref::m_Ptr)
114 throw ACCESS_EXCEPTION("Feature not present (reference not valid)");
115 return ref::m_Ptr->IsDone(Verify);
116 }
117 };
118
121 typedef CCommandRefT<ICommand> CCommandRef;
122
123#endif
124
125}
126
127#ifdef _MSC_VER
128# pragma warning ( pop )
129#endif
130
131#endif // ifndef GENAPI_ICOMMAND_H
declspec's to be used for GenApi Windows dll
virtual bool operator()() const
Get node value.
Definition IBoolean.h:77
virtual bool IsDone(bool Verify=true)=0
Query whether the command is executed.
Definition of the interface IValue.
Common types used in the public GenApi interface.
#define ACCESS_EXCEPTION
Fires a access exception, e.g. throw ACCESS_EXCEPTION("Not everybody")
Definition GCException.h:252
CCommandRefT< ICommand > CCommandRef
Definition ICommand.h:121
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT ICommand
Definition ICommand.h:57
GENICAM_INTERFACE GENAPI_DECL_ABSTRACT IValue
Interface for value properties.
Definition IValue.h:59