4
RawSpeed - RAW file decoder.
6
Copyright (C) 2009 Klaus Post
8
This library is free software; you can redistribute it and/or
9
modify it under the terms of the GNU Lesser General Public
10
License as published by the Free Software Foundation; either
11
version 2 of the License, or (at your option) any later version.
13
This library is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
Lesser General Public License for more details.
18
You should have received a copy of the GNU Lesser General Public
19
License along with this library; if not, write to the Free Software
20
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
http://www.klauspost.com
27
FileMap::FileMap(uint32 _size) : size(_size) {
29
throw FileIOException("Filemap of 0 bytes not possible");
30
data = (uchar8*)_aligned_malloc(size + 4, 16);
32
throw FileIOException("Not enough memory to open file.");
37
FileMap::FileMap(uchar8* _data, uint32 _size): data(_data), size(_size) {
42
FileMap::~FileMap(void) {
43
if (data && mOwnAlloc) {
50
FileMap* FileMap::clone() {
51
FileMap *new_map = new FileMap(size);
52
memcpy(new_map->data, data, size);
56
FileMap* FileMap::cloneRandomSize() {
57
uint32 new_size = (rand() | (rand() << 15)) % size;
58
FileMap *new_map = new FileMap(new_size);
59
memcpy(new_map->data, data, new_size);
63
void FileMap::corrupt(int errors) {
64
for (int i = 0; i < errors; i++) {
65
uint32 pos = (rand() | (rand() << 15)) % size;
66
data[pos] = rand() & 0xff;
70
const uchar8* FileMap::getData( uint32 offset )
73
throw IOException("FileMap: Attempting to read out of file.");
76
} // namespace RawSpeed