GenApi  3.5.1
ChunkAdapterUniversal.h
1 //-----------------------------------------------------------------------------
2 // (c) 2019-2022 by MVTec Software GmbH
3 // Author: Jan Becvar
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 //-----------------------------------------------------------------------------
28 #ifndef GENAPI_CHUNKADAPTERUNIVERSAL_H
29 #define GENAPI_CHUNKADAPTERUNIVERSAL_H
30 
31 #include <GenApi/ChunkAdapter.h>
32 #include <GenApi/ChunkAdapterGeneric.h>
33 
34 
35 namespace GENAPI_NAMESPACE
36 {
38  class GENAPI_DECL CChunkAdapterUniversal : public CChunkAdapter
39  {
40 
41  public:
43  CChunkAdapterUniversal(INodeMap* pNodeMap = NULL, int64_t MaxChunkCacheSize = -1);
44 
46  virtual ~CChunkAdapterUniversal();
47 
48  // Does not have implementation, use one of the specific versions if needed
49  virtual bool CheckBufferLayout(uint8_t *pBuffer, int64_t BufferLength);
50 
51  // Buffer layout checkers for big/little-endian standard chunk formats
52  bool CheckBufferLayoutBE(const uint8_t *pBuffer, int64_t BufferLength);
53  bool CheckBufferLayoutLE(const uint8_t *pBuffer, int64_t BufferLength);
54 
55  // Does not have implementation, use one of the specific versions
56  virtual void AttachBuffer(uint8_t *pBuffer, int64_t BufferLength, AttachStatistics_t *pAttachStatistics = NULL);
57 
58  // Attach buffer containing standard big/little-endian chunk formats
59  void AttachBufferBE(const uint8_t *pBuffer, int64_t BufferLength, AttachStatistics_t *pAttachStatistics = NULL);
60  void AttachBufferLE(const uint8_t *pBuffer, int64_t BufferLength, AttachStatistics_t *pAttachStatistics = NULL);
61 
62  // Named versions referring to particular standards defining the chunk formats
63  void AttachBufferGEV(const uint8_t *pBuffer, int64_t BufferLength, AttachStatistics_t *pAttachStatistics = NULL);
64  void AttachBufferU3V(const uint8_t *pBuffer, int64_t BufferLength, AttachStatistics_t *pAttachStatistics = NULL);
65  void AttachBufferGenDC(const uint8_t *pBuffer, int64_t BufferLength, AttachStatistics_t *pAttachStatistics = NULL);
66 
67  // Generic version for use with GenTL-based chunk parsing functions for buffer with unknown format
68  void AttachBufferGeneric(const uint8_t *pBuffer, SingleChunkData_t *ChunkData, int64_t NumChunks, AttachStatistics_t *pAttachStatistics = NULL);
69  void AttachBufferGeneric(const uint8_t *pBuffer, SingleChunkDataStr_t *ChunkData, int64_t NumChunks, AttachStatistics_t *pAttachStatistics = NULL);
70  };
71 
72 }
73 
74 #endif // GENAPI_CHUNKADAPTERUNIVERSAL_H
Connects a universal chunked buffer to a node map.
Definition: ChunkAdapterUniversal.h:38
Definition: ChunkAdapter.h:43
GENICAM_INTERFACE INodeMap
Interface to access the node map.
Definition: INode.h:50
Declaration of the CChunkAdapter class.
Connects a chunked buffer to a node map.
Definition: ChunkAdapter.h:55
Definition: ChunkAdapter.h:37