//////////////////////////////////////////////////////////////////////// // Copyright (c) Nehmulos 2011-2014 // This file is part of N0 Strain Serialization Library. // // N0Strain-Serialization-Library is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // N0Strain-Serialization-Library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with N0Strain-Serialization-Library. If not, see https://gnu.org/licenses/lgpl-3.0 //////////////////////////////////////////////////////////////////////// #ifndef BINARY_READER_H_ #define BINARY_READER_H_ #include "Describer.h" #include "BinaryFstream.h" #include #include namespace nw { class BinaryReader : public Describer{ public: BinaryReader(const String filename); virtual ~BinaryReader(); void close(); void readFromFile(const String filename); bool isInWriteMode(); bool push(const String tagName); void describeArray(const String arrayName, const String elementsName, unsigned int size); void describeValueArray(const String arrayName, unsigned int size); bool enterNextElement(unsigned int iterator); /* Serialize functions */ void describeName(const String name); void describeValue(bool&); void describeValue(char&); void describeValue(unsigned char&); void describeValue(signed char&); void describeValue(short&); void describeValue(unsigned short&); void describeValue(int&); void describeValue(unsigned int&); void describeValue(long&); void describeValue(unsigned long&); void describeValue(float&); void describeValue(Pointer); void describeValue(double&); void describeValue(long long&); void describeValue(long double&); void describeValue(String&); void describeBlob(const String childName,nw::Pointer binaryBlob, unsigned int blobSize); void comment(const String text); void pop(); private: BinaryFstream file; std::stack openArrays; ///Calls hasValidStart and hasValidEnd bool isValid(); // bool isSmallEndian(); // bool isBigEndian(); // void swapEndians(); bool hasValidStart(); bool hasValidEnd(); }; } // namespace nw #endif /* BINARY_READER_H_ */