File: RawFile.cpp

package info (click to toggle)
glbinding 3.3.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 12,972 kB
  • sloc: cpp: 224,461; javascript: 1,615; sh: 114; makefile: 98
file content (59 lines) | stat: -rw-r--r-- 961 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

#include "RawFile.h"

#include <fstream>
#include <iostream>

RawFile::RawFile(const std::string & _filePath)
:   m_filePath(_filePath)
,   m_valid(false)
{
    m_valid = readFile();
}

RawFile::~RawFile()
{
}

bool RawFile::isValid() const
{
    return m_valid;
}

const char * RawFile::data() const
{
    return m_data.data();
}

size_t RawFile::size() const
{
    return m_data.size();
}

bool RawFile::readFile()
{
    std::ifstream ifs(m_filePath, std::ios::in | std::ios::binary);

    if (!ifs)
    {
        std::cerr << "Reading from file \"" << m_filePath << "\" failed." << std::endl;
        return false;
    }
    
    readRawData(ifs);

    ifs.close();

    return true;
}

void RawFile::readRawData(std::ifstream & ifs)
{
    ifs.seekg(0, std::ios::end);

    const size_t _size = static_cast<size_t>(ifs.tellg());
    m_data.resize(_size);

    ifs.seekg(0, std::ios::beg);
    ifs.read(m_data.data(), static_cast<std::streamsize>(_size));
}