00001 00002 //----------------------------------------------------------------------------- 00003 // (c) 2006 by Basler Vision Technologies 00004 // Section: Vision Components 00005 // Project: GenApi 00006 // Author: Hartmut Nebelung 00007 // $Header$ 00008 // 00009 // License: This file is published under the license of the EMVA GenICam Standard Group. 00010 // A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'. 00011 // If for some reason you are missing this file please contact the EMVA or visit the website 00012 // (http://www.genicam.org) for a full copy. 00013 // 00014 // THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS" 00015 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 00016 // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00017 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP 00018 // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00019 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00020 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 00021 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 00022 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00023 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00024 // POSSIBILITY OF SUCH DAMAGE. 00025 //----------------------------------------------------------------------------- 00032 #ifndef GENAPI_SMARTFEATURE_H 00033 #define GENAPI_SMARTFEATURE_H 00034 00035 #include "../Types.h" 00036 #include "../IInteger.h" 00037 #include "Register.h" 00038 #include "BaseT.h" 00039 #include "ValueT.h" 00040 #include "NodeT.h" 00041 #include "IntegerT.h" 00042 00043 00045 namespace GENAPI_NAMESPACE 00046 { 00047 // ************************************************************* 00048 // CSmartFeature class 00049 // ************************************************************* 00051 00057 class CSmartFeatureImpl : public CRegisterImpl, public IInteger 00058 { 00059 public: 00060 CSmartFeatureImpl(void); 00061 00062 protected: 00063 //------------------------------------------------------------- 00064 // Implementation of IInteger 00065 //------------------------------------------------------------- 00067 //{ 00068 // Set feature value 00069 virtual void InternalSetValue(int64_t /*Value*/, bool /*Verify = true*/) 00070 { 00071 throw ACCESS_EXCEPTION_NODE("CSmartFeatureImpl::InternalSetValue : a smart feature cannot be written"); 00072 } 00073 00074 // Get feature value 00075 virtual int64_t InternalGetValue(bool Verify = false, bool IgnoreCache = false); 00076 00077 // Get minimum value allowed 00078 virtual int64_t InternalGetMin() const; 00079 00080 // Get maximum value allowed 00081 virtual int64_t InternalGetMax() const; 00082 00083 // Get increment 00084 virtual int64_t InternalGetInc() const; 00085 00087 const int64_autovector_t InternalGetListOfValidValues() 00088 { 00089 return int64_autovector_t(); 00090 } 00091 00092 // Get recommended representation 00093 virtual ERepresentation InternalGetRepresentation() const 00094 { 00095 return PureNumber; 00096 } 00097 00099 virtual GENICAM_NAMESPACE::gcstring InternalGetUnit() 00100 { 00101 return GENICAM_NAMESPACE::gcstring(); 00102 } 00103 00105 virtual EInterfaceType InternalGetPrincipalInterfaceType() const 00106 { 00107 return intfIInteger; 00108 } 00109 00110 00111 //\} 00112 //------------------------------------------------------------- 00113 // Implementation of INode 00114 //------------------------------------------------------------- 00116 // \{ 00117 virtual EAccessMode InternalGetAccessMode() const; 00118 // \} 00119 00120 //------------------------------------------------------------- 00121 // Implementation of INodePrivate 00122 //------------------------------------------------------------- 00124 // \{ 00125 virtual void SetProperty(CProperty &Property); 00126 virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList) const; 00127 // \} 00128 00129 private: 00131 GUID m_FeatureID; 00132 }; 00133 00134 class CSmartFeature : public BaseT< ValueT< NodeT< IntegerT< RegisterT< CSmartFeatureImpl > > > > > 00135 { 00136 }; 00137 } 00138 #endif // GENAPI_SMARTFEATURE_H