BearParser
Portable Executable parsing library (from PE-bear)
Loading...
Searching...
No Matches
FileBuffer.h
Go to the documentation of this file.
1#pragma once
2#include <QtCore>
3
4#include "ByteBuffer.h"
5
7const bufsize_t FILEVIEW_MAXSIZE = (1024*1024*400); //419mb
8
10{
11public:
12 FileBufferException(const QString info) : CustomException(info) {}
13};
14
15
17public:
18 static ByteBuffer* read(QString &file, bufsize_t minBufSize); //throws exceptions
19 static bufsize_t getReadableSize(QFile &fIn);
20
21 static bufsize_t getReadableSize(QString &path);
22 static bufsize_t dump(QString fileName, AbstractByteBuffer &buf, bool allowExceptions = false);
23 QString getFileName() { return this->fileName; }
24
25protected:
26 static ByteBuffer* read(QFile &fIn, bufsize_t minBufSize); //throws exceptions
27
28 AbstractFileBuffer(QString v_fileName) :fileName(v_fileName) {}
29
30 QString fileName;
31 qint64 fileSize; // real size of the file
32};
33
34
36{
37public:
38 FileView(QString &fileName, bufsize_t maxSize = FILE_MAXSIZE); //throws exceptions
39 virtual ~FileView();
40
41 virtual bufsize_t getContentSize() { return mappedSize; }
42 virtual BYTE* getContent() { return mappedContent; }
44 virtual bool isTruncated() { return fIn.size() > mappedSize; }
45
46protected:
49 QFile fIn;
50};
51
52
54{
55public:
56 FileBuffer(QString &fileName, bufsize_t minSize, bufsize_t maxSize = FILE_MAXSIZE) //throws exceptions
58 {
59 QFile fIn(fileName);
60 if (fIn.open(QFile::ReadOnly) == false) {
61 throw FileBufferException("Cannot open the file: " + fileName);
62 }
63 fileSize = fIn.size();
64 this->m_Buf = read(fIn, minSize);//throws exceptions
65 fIn.close();
66 }
67
68 virtual ~FileBuffer() { delete m_Buf; }
69
70 virtual bufsize_t getContentSize() { return (m_Buf == NULL) ? 0 : m_Buf->getContentSize(); }
71 virtual BYTE* getContent() { return (m_Buf == NULL) ? NULL : m_Buf->getContent(); }
72 uint64_t getFileSize() { return static_cast<uint64_t>(fileSize); }
73 bool resize(bufsize_t newSize) { return m_Buf->resize(newSize); }
74 virtual bool isTruncated() { return fileSize > this->m_Buf->getContentSize(); }
75
76protected:
78};
const bufsize_t BUFSIZE_MAX
uint32_t bufsize_t
const bufsize_t FILEVIEW_MAXSIZE
Definition: FileBuffer.h:7
const bufsize_t FILE_MAXSIZE
Definition: FileBuffer.h:6
static bufsize_t getReadableSize(QFile &fIn)
Definition: FileBuffer.cpp:85
static bufsize_t dump(QString fileName, AbstractByteBuffer &buf, bool allowExceptions=false)
Definition: FileBuffer.cpp:106
QString getFileName()
Definition: FileBuffer.h:23
static ByteBuffer * read(QString &file, bufsize_t minBufSize)
Definition: FileBuffer.cpp:41
AbstractFileBuffer(QString v_fileName)
Definition: FileBuffer.h:28
virtual BYTE * getContent()
Definition: ByteBuffer.h:16
virtual bufsize_t getContentSize()
Definition: ByteBuffer.h:15
virtual bool resize(bufsize_t newSize)
Definition: ByteBuffer.cpp:53
FileBufferException(const QString info)
Definition: FileBuffer.h:12
virtual ~FileBuffer()
Definition: FileBuffer.h:68
ByteBuffer * m_Buf
Definition: FileBuffer.h:77
FileBuffer(QString &fileName, bufsize_t minSize, bufsize_t maxSize=FILE_MAXSIZE)
Definition: FileBuffer.h:56
uint64_t getFileSize()
Definition: FileBuffer.h:72
virtual bufsize_t getContentSize()
Definition: FileBuffer.h:70
virtual BYTE * getContent()
Definition: FileBuffer.h:71
bool resize(bufsize_t newSize)
Definition: FileBuffer.h:73
virtual bool isTruncated()
Definition: FileBuffer.h:74
virtual ~FileView()
Definition: FileBuffer.cpp:25
virtual bool isTruncated()
Definition: FileBuffer.h:44
virtual BYTE * getContent()
Definition: FileBuffer.h:42
bufsize_t mappedSize
Definition: FileBuffer.h:48
bufsize_t getMappableSize(QFile &fIn)
Definition: FileBuffer.cpp:31
QFile fIn
Definition: FileBuffer.h:49
virtual bufsize_t getContentSize()
Definition: FileBuffer.h:41
BYTE * mappedContent
Definition: FileBuffer.h:47