1 /*************************************************************************** 2 * Copyright (C) 2005-2019 by the FIFE team * 3 * http://www.fifengine.net * 4 * This file is part of FIFE. * 5 * * 6 * FIFE is free software; you can redistribute it and/or * 7 * modify it under the terms of the GNU Lesser General Public * 8 * License as published by the Free Software Foundation; either * 9 * version 2.1 of the License, or (at your option) any later version. * 10 * * 11 * This library is distributed in the hope that it will be useful, * 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 * Lesser General Public License for more details. * 15 * * 16 * You should have received a copy of the GNU Lesser General Public * 17 * License along with this library; if not, write to the * 18 * Free Software Foundation, Inc., * 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * 20 ***************************************************************************/ 21 22 #ifndef FIFE_VFS_RAW_RAWDATAMEMSOURE_H 23 #define FIFE_VFS_RAW_RAWDATAMEMSOURE_H 24 25 // Standard C++ library includes 26 27 // Platform specific includes 28 #include "util/base/fife_stdint.h" 29 30 // 3rd party library includes 31 32 // FIFE includes 33 // These includes are split up in two parts, separated by one empty line 34 // First block: files included from the FIFE root src directory 35 // Second block: files included from the same folder 36 #include "rawdatasource.h" 37 38 namespace FIFE { 39 40 /** 41 * Simpe RawDataSource that reads data from raw memory 42 * 43 * @note This Class is @b not incomplete. Use @c getRawData to 44 * write into the Buffer. 45 * 46 * @see RawDataSource 47 */ 48 class RawDataMemSource : public RawDataSource { 49 public: 50 /** 51 * Create a new RawDataMemSource that allocates datalen bytes. 52 * @param datalen the datalen to allocate 53 */ 54 RawDataMemSource(uint32_t datalen); 55 virtual ~RawDataMemSource(); 56 57 /** Get a Pointer to the data 58 * You need to use this function to fill the class with meaningfull data. 59 */ 60 uint8_t* getRawData() const; 61 62 virtual uint32_t getSize() const; 63 virtual void readInto(uint8_t* buffer, uint32_t start, uint32_t length); 64 65 private: 66 uint8_t* m_data; 67 uint32_t m_datalen; 68 RawDataMemSource(const RawDataMemSource &)69 RawDataMemSource(const RawDataMemSource&) {}; 70 RawDataMemSource& operator=(const RawDataMemSource) { return *this; } 71 }; 72 73 } 74 75 #endif 76