LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/cad - vsilfileio.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 35 47 74.5 %
Date: 2024-11-21 22:18:42 Functions: 8 12 66.7 %

          Line data    Source code
       1             : /*******************************************************************************
       2             :  *  Project: libopencad
       3             :  *  Purpose: OpenSource CAD formats support library
       4             :  *  Author: Alexandr Borzykh, mush3d at gmail.com
       5             :  *  Author: Dmitry Baryshnikov, bishop.dev@gmail.com
       6             :  *  Language: C++
       7             :  *******************************************************************************
       8             :  *  The MIT License (MIT)
       9             :  *
      10             :  *  Copyright (c) 2016 Alexandr Borzykh
      11             :  *  Copyright (c) 2016 NextGIS, <info@nextgis.com>
      12             :  *
      13             :  * SPDX-License-Identifier: MIT
      14             :  *******************************************************************************/
      15             : #include "vsilfileio.h"
      16             : 
      17           9 : VSILFileIO::VSILFileIO(const char *pszFilePath)
      18           9 :     : CADFileIO(pszFilePath), m_oFileStream(nullptr)
      19             : {
      20           9 : }
      21             : 
      22          18 : VSILFileIO::~VSILFileIO()
      23             : {
      24           9 :     if (m_oFileStream)
      25           1 :         VSILFileIO::Close();
      26          18 : }
      27             : 
      28           0 : const char *VSILFileIO::ReadLine()
      29             : {
      30             :     // TODO: getline
      31           0 :     return nullptr;
      32             : }
      33             : 
      34           0 : bool VSILFileIO::Eof() const
      35             : {
      36           0 :     return VSIFEofL(m_oFileStream) || VSIFErrorL(m_oFileStream);
      37             : }
      38             : 
      39           9 : bool VSILFileIO::Open(int mode)
      40             : {
      41             :     // NOTE: now support only read mode
      42           9 :     if (mode & OpenMode::out)
      43           0 :         return false;
      44             : 
      45           9 :     std::string sOpenMode = "r";
      46           9 :     if (mode & OpenMode::binary)
      47           9 :         sOpenMode = "rb";
      48             : 
      49           9 :     m_oFileStream = VSIFOpenL(m_soFilePath.c_str(), sOpenMode.c_str());
      50             : 
      51           9 :     if (m_oFileStream != nullptr)
      52           9 :         m_bIsOpened = true;
      53             : 
      54           9 :     return m_bIsOpened;
      55             : }
      56             : 
      57           9 : bool VSILFileIO::Close()
      58             : {
      59           9 :     bool bRet = VSIFCloseL(m_oFileStream) == 0 ? true : false;
      60           9 :     m_oFileStream = nullptr;
      61           9 :     return bRet;
      62             : }
      63             : 
      64         458 : int VSILFileIO::Seek(long offset, CADFileIO::SeekOrigin origin)
      65             : {
      66         458 :     int nWhence = 0;
      67         458 :     switch (origin)
      68             :     {
      69           8 :         case SeekOrigin::CUR:
      70           8 :             nWhence = SEEK_CUR;
      71           8 :             break;
      72           0 :         case SeekOrigin::END:
      73           0 :             nWhence = SEEK_END;
      74           0 :             break;
      75         450 :         case SeekOrigin::BEG:
      76         450 :             nWhence = SEEK_SET;
      77         450 :             break;
      78             :     }
      79             : 
      80         458 :     return VSIFSeekL(m_oFileStream, offset, nWhence) == 0 ? 0 : 1;
      81             : }
      82             : 
      83           0 : long int VSILFileIO::Tell()
      84             : {
      85           0 :     return static_cast<long>(VSIFTellL(m_oFileStream));
      86             : }
      87             : 
      88         716 : size_t VSILFileIO::Read(void *ptr, size_t size)
      89             : {
      90         716 :     return VSIFReadL(static_cast<char *>(ptr), 1, size, m_oFileStream);
      91             : }
      92             : 
      93           0 : size_t VSILFileIO::Write(void * /*ptr*/, size_t /*size*/)
      94             : {
      95             :     // unsupported
      96           0 :     return 0;
      97             : }
      98             : 
      99          26 : void VSILFileIO::Rewind()
     100             : {
     101          26 :     VSIRewindL(m_oFileStream);
     102          26 : }

Generated by: LCOV version 1.14