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