Coverage Report

Created: 2025-11-16 06:25

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gdal/gcore/gdal_openinfo.h
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Name:     gdal_openinfo.h
4
 * Project:  GDAL Core
5
 * Purpose:  Declaration of GDALOpenInfo class
6
 * Author:   Frank Warmerdam, warmerdam@pobox.com
7
 *
8
 ******************************************************************************
9
 * Copyright (c) 1998, Frank Warmerdam
10
 * Copyright (c) 2007-2014, Even Rouault <even dot rouault at spatialys.com>
11
 *
12
 * SPDX-License-Identifier: MIT
13
 ****************************************************************************/
14
15
#ifndef GDALOPENINFO_H_INCLUDED
16
#define GDALOPENINFO_H_INCLUDED
17
18
#include "cpl_port.h"
19
20
#include "gdal.h"
21
22
/* ******************************************************************** */
23
/*                             GDALOpenInfo                             */
24
/* ******************************************************************** */
25
26
/** Class for dataset open functions. */
27
class CPL_DLL GDALOpenInfo
28
{
29
    bool bHasGotSiblingFiles = false;
30
    char **papszSiblingFiles = nullptr;
31
    int nHeaderBytesTried = 0;
32
33
  public:
34
    GDALOpenInfo(const char *pszFile, int nOpenFlagsIn,
35
                 const char *const *papszSiblingFiles = nullptr);
36
    ~GDALOpenInfo(void);
37
38
    /** Filename */
39
    char *pszFilename = nullptr;
40
41
    /** Result of CPLGetExtension(pszFilename); */
42
    std::string osExtension{};
43
44
    /** Open options */
45
    char **papszOpenOptions = nullptr;
46
47
    /** Access flag */
48
    GDALAccess eAccess = GA_ReadOnly;
49
    /** Open flags */
50
    int nOpenFlags = 0;
51
52
    /** Whether stat()'ing the file was successful */
53
    bool bStatOK = false;
54
    /** Whether the file is a directory */
55
    bool bIsDirectory = false;
56
57
    /** Pointer to the file */
58
    VSILFILE *fpL = nullptr;
59
60
    /** Number of bytes in pabyHeader */
61
    int nHeaderBytes = 0;
62
    /** Buffer with first bytes of the file */
63
    GByte *pabyHeader = nullptr;
64
65
    /** Allowed drivers (NULL for all) */
66
    const char *const *papszAllowedDrivers = nullptr;
67
68
    int TryToIngest(int nBytes);
69
    char **GetSiblingFiles();
70
    char **StealSiblingFiles();
71
    bool AreSiblingFilesLoaded() const;
72
73
    bool IsSingleAllowedDriver(const char *pszDriverName) const;
74
75
    /** Return whether the extension of the file is equal to pszExt, using
76
     * case-insensitive comparison.
77
     * @since 3.11 */
78
    inline bool IsExtensionEqualToCI(const char *pszExt) const
79
0
    {
80
0
        return EQUAL(osExtension.c_str(), pszExt);
81
0
    }
82
83
  private:
84
    CPL_DISALLOW_COPY_ASSIGN(GDALOpenInfo)
85
};
86
87
#endif