00001 //----------------------------------------------------------------------------- 00002 // (c) 2006 by Basler Vision Technologies 00003 // Section: Vision Components 00004 // Project: GenApi 00005 // Author: Fritz Dierks 00006 // $Header$ 00007 // 00008 // License: This file is published under the license of the EMVA GenICam Standard Group. 00009 // A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'. 00010 // If for some reason you are missing this file please contact the EMVA or visit the website 00011 // (http://www.genicam.org) for a full copy. 00012 // 00013 // THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS" 00014 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 00015 // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00016 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP 00017 // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00018 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00019 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 00020 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 00021 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00022 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00023 // POSSIBILITY OF SUCH DAMAGE. 00024 //----------------------------------------------------------------------------- 00031 #ifndef GENAPI_PORT_H 00032 #define GENAPI_PORT_H 00033 00034 #include "../Types.h" 00035 #include "../IPortConstruct.h" 00036 #include "../IChunkPort.h" 00037 #include "../IPortRecorder.h" 00038 #include "../IString.h" 00039 #include "Node.h" 00040 #include "NodeT.h" 00041 #include "BaseT.h" 00042 00043 namespace GENAPI_NAMESPACE 00044 { 00045 00046 class CValueCache; 00047 00048 //************************************************************* 00049 // CPort class 00050 //************************************************************* 00051 00053 00055 class CPortImplIntern : 00056 public IPortConstruct, 00057 public IChunkPort, 00058 public IPortRecorder, 00059 public CNodeImpl 00060 { 00061 public: 00063 //constructor 00064 CPortImplIntern(); 00065 00067 virtual ~CPortImplIntern(); 00068 00069 //------------------------------------------------------------- 00070 // IBase implementation 00071 //------------------------------------------------------------- 00072 00073 protected: 00075 virtual EAccessMode InternalGetAccessMode() const; 00076 00078 virtual EInterfaceType InternalGetPrincipalInterfaceType() const 00079 { 00080 return intfIPort; 00081 } 00082 00083 //------------------------------------------------------------- 00084 // IPort implementation 00085 //------------------------------------------------------------- 00086 00087 public: 00089 virtual void Read(void *pBuffer, int64_t Address, int64_t Length); 00090 00092 virtual void Write(const void *pBuffer, int64_t Address, int64_t Length); 00093 00094 //------------------------------------------------------------- 00095 // IPortConstruct implementation 00096 //------------------------------------------------------------- 00097 00099 void SetPortImpl(IPort* pPort); 00100 00101 //------------------------------------------------------------- 00102 // IChunkPort implementation 00103 //------------------------------------------------------------- 00104 00106 virtual GENICAM_NAMESPACE::gcstring GetChunkID() const; 00107 00109 virtual EYesNo GetSwapEndianess(); 00110 00112 virtual EYesNo CacheChunkData() const; 00113 00114 //------------------------------------------------------------- 00115 // IPortRecorder implementation 00116 //------------------------------------------------------------- 00117 00119 virtual void StartRecording( IPortWriteList *pPortRecorder ); 00120 00122 virtual void StopRecording(); 00123 00124 //------------------------------------------------------------- 00125 // IPortReplay implementation 00126 //------------------------------------------------------------- 00127 00129 00134 virtual void Replay( IPortWriteList *pPortRecorder, bool Invalidate = true ); 00135 00136 //------------------------------------------------------------- 00137 // Initializing 00138 //------------------------------------------------------------- 00139 00140 00141 virtual void SetProperty(CProperty &Property); 00142 virtual bool GetProperty(CNodeDataMap *pNodeDataMap, CPropertyID::EProperty_ID_t PropertyID, CNodeData::PropertyVector_t &PropertyList) const; 00143 00145 virtual CValueCache* GetValueCache() const; 00146 00147 00148 protected: 00149 //------------------------------------------------------------- 00150 // Member variables 00151 //------------------------------------------------------------- 00152 00154 IPort *m_pPort; 00155 00157 IPortWriteList *m_pPortWriteList; 00158 00160 CStringPolyRef m_ChunkID; 00161 00163 mutable GENAPI_NAMESPACE::CValueCache *m_pValueCache; 00164 00166 EYesNo m_SwapEndianess; 00167 00169 EYesNo m_CacheChunkData; 00170 }; 00171 00172 class CPort : public BaseT< NodeT< CPortImplIntern > > 00173 { 00174 }; 00175 00176 } 00177 00178 #endif // ifndef GENAPI_PORT_H