/src/gdal/frmts/pcidsk/sdk/pcidsk_file.h
Line | Count | Source |
1 | | /****************************************************************************** |
2 | | * |
3 | | * Purpose: Declaration of the PCIDSKFile Interface |
4 | | * |
5 | | ****************************************************************************** |
6 | | * Copyright (c) 2009 |
7 | | * PCI Geomatics, 90 Allstate Parkway, Markham, Ontario, Canada. |
8 | | * |
9 | | * SPDX-License-Identifier: MIT |
10 | | ****************************************************************************/ |
11 | | #ifndef INCLUDE_PCIDSK_FILE_H |
12 | | #define INCLUDE_PCIDSK_FILE_H |
13 | | |
14 | | #include "pcidsk_segment.h" |
15 | | #include <string> |
16 | | #include <vector> |
17 | | #include <map> |
18 | | #include <functional> |
19 | | #include <algorithm> |
20 | | |
21 | | namespace PCIDSK |
22 | | { |
23 | | /************************************************************************/ |
24 | | /* PCIDSKFile */ |
25 | | /************************************************************************/ |
26 | | static bool CheckSegNamesEqual(const char * pszName, unsigned nSize, |
27 | | const char * pszCheckName, unsigned nCheckSize) |
28 | 12.1k | { |
29 | 12.1k | if(nCheckSize == 0) |
30 | 4.18k | return true; |
31 | 7.93k | int nFirstSize = std::min(nCheckSize, nSize); |
32 | 7.93k | if(!std::equal(pszName, pszName + nFirstSize, pszCheckName)) |
33 | 1.94k | return false; |
34 | | //make sure the rest of the string is just whitespace |
35 | 6.04k | for(unsigned i = nFirstSize; i < nSize; i++) |
36 | 57 | if(pszName[i] != ' ') |
37 | 0 | return false; |
38 | 5.99k | return true; |
39 | 5.99k | } Unexecuted instantiation: pcidskdataset2.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: vsi_pcidsk_io.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: ogrpcidsklayer.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpcidskchannel.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: ctiledchannel.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpcidskblockfile.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) cpcidskfile.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Line | Count | Source | 28 | 12.1k | { | 29 | 12.1k | if(nCheckSize == 0) | 30 | 4.18k | return true; | 31 | 7.93k | int nFirstSize = std::min(nCheckSize, nSize); | 32 | 7.93k | if(!std::equal(pszName, pszName + nFirstSize, pszCheckName)) | 33 | 1.94k | return false; | 34 | | //make sure the rest of the string is just whitespace | 35 | 6.04k | for(unsigned i = nFirstSize; i < nSize; i++) | 36 | 57 | if(pszName[i] != ' ') | 37 | 0 | return false; | 38 | 5.99k | return true; | 39 | 5.99k | } |
Unexecuted instantiation: metadataset_p.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: pcidskcreate.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: pcidskopen.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpcidsk_array.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpcidskbitmap.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpcidskgcp2segment.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpcidsksegment.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpcidskvectorsegment.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpcidskvectorsegment_consistencycheck.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: metadatasegment_p.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: vecsegdataindex.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: vecsegheader.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: gdal_edb.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cbandinterleavedchannel.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cexternalchannel.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: cpixelinterleavedchannel.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) Unexecuted instantiation: edb_pcidsk.cpp:PCIDSK::CheckSegNamesEqual(char const*, unsigned int, char const*, unsigned int) |
40 | | |
41 | | class PCIDSKChannel; |
42 | | class PCIDSKSegment; |
43 | | class PCIDSKInterfaces; |
44 | | class Mutex; |
45 | | |
46 | | //! Top interface to PCIDSK (.pix) files. |
47 | | class PCIDSK_DLL PCIDSKFile |
48 | | { |
49 | | public: |
50 | | virtual ~PCIDSKFile(); |
51 | | |
52 | | virtual PCIDSKInterfaces *GetInterfaces() = 0; |
53 | | |
54 | | virtual PCIDSKChannel *GetChannel( int band ) = 0; |
55 | | virtual PCIDSKSegment *GetSegment( int segment ) = 0; |
56 | | |
57 | | virtual PCIDSK::PCIDSKSegment * |
58 | | GetSegment( int type, const std::string & name, int previous = 0 ) = 0; |
59 | | virtual unsigned GetSegmentID(int segment, const std::string & name = {}, |
60 | | unsigned previous = 0) const = 0; |
61 | | virtual std::vector<unsigned> GetSegmentIDs(int segment, |
62 | | const std::function<bool(const char *, unsigned)> & oFilter) const = 0; |
63 | | std::vector<unsigned> GetSegmentIDs(int segment) const |
64 | 0 | { |
65 | 0 | static const std::function<bool(const char *, unsigned)> oTrue = |
66 | 0 | [](const char *, unsigned) { return true; }; |
67 | 0 | return GetSegmentIDs(segment, oTrue); |
68 | 0 | } |
69 | | std::vector<unsigned> GetSegmentIDs(int segment, const std::string & name) const |
70 | 0 | { |
71 | 0 | std::function<bool(const char *, unsigned)> oCheck = |
72 | 0 | [&name](const char * pszName, unsigned nSize) |
73 | 0 | { |
74 | 0 | return CheckSegNamesEqual(pszName, nSize, name.c_str(), |
75 | 0 | (unsigned)name.size()); |
76 | 0 | }; |
77 | 0 | return GetSegmentIDs(segment, std::move(oCheck)); |
78 | 0 | } |
79 | | |
80 | | virtual int GetWidth() const = 0; |
81 | | virtual int GetHeight() const = 0; |
82 | | virtual int GetChannels() const = 0; |
83 | | virtual std::string GetInterleaving() const = 0; |
84 | | virtual bool GetUpdatable() const = 0; |
85 | | virtual uint64 GetFileSize() const = 0; |
86 | | |
87 | | virtual int CreateSegment( std::string name, std::string description, |
88 | | eSegType seg_type, int data_blocks ) = 0; |
89 | | virtual void DeleteSegment( int segment ) = 0; |
90 | | virtual void CreateOverviews( int chan_count, const int *chan_list, |
91 | | int factor, std::string resampling ) = 0; |
92 | | |
93 | | // the following are only for pixel interleaved IO |
94 | | virtual int GetPixelGroupSize() const = 0; |
95 | | virtual void *ReadAndLockBlock( int block_index, int xoff=-1, int xsize=-1) = 0; |
96 | | virtual void UnlockBlock( bool mark_dirty = false ) = 0; |
97 | | |
98 | | // low level io, primarily internal. |
99 | | virtual void WriteToFile( const void *buffer, uint64 offset, uint64 size)=0; |
100 | | virtual void ReadFromFile( void *buffer, uint64 offset, uint64 size ) = 0; |
101 | | |
102 | | virtual void GetIODetails( void ***io_handle_pp, Mutex ***io_mutex_pp, |
103 | | const std::string& filename=std::string(), bool writable=false ) = 0; |
104 | | |
105 | | virtual std::string GetUniqueEDBFilename() = 0; |
106 | | |
107 | | virtual std::map<int,int> GetEDBChannelMap(std::string oExtFilename) = 0; |
108 | | |
109 | | virtual std::string GetMetadataValue( const std::string& key ) = 0; |
110 | | virtual void SetMetadataValue( const std::string& key, const std::string& value ) = 0; |
111 | | virtual std::vector<std::string> GetMetadataKeys() = 0; |
112 | | |
113 | | virtual void Synchronize() = 0; |
114 | | }; |
115 | | } // end namespace PCIDSK |
116 | | |
117 | | #endif // INCLUDE_PCIDSK_FILE_H |