diff --git a/include/BinaryReader.hpp b/include/BinaryReader.hpp index 8f507ef..3c7f2ff 100644 --- a/include/BinaryReader.hpp +++ b/include/BinaryReader.hpp @@ -1,3 +1,17 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see #ifndef __BINARYREADER_HPP__ #define __BINARYREADER_HPP__ diff --git a/include/BinaryWriter.hpp b/include/BinaryWriter.hpp index 26484b7..06b7913 100644 --- a/include/BinaryWriter.hpp +++ b/include/BinaryWriter.hpp @@ -1,3 +1,17 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see #ifndef __BINARYWRITER_HPP__ #define __BINARYWRITER_HPP__ @@ -13,21 +27,109 @@ */ class BinaryWriter : public Stream { -public: - BinaryWriter(const Uint8* data, Uint64 length); - BinaryWriter(const Stream& stream); - BinaryWriter(const std::string& filename); +public: + /*! \brief This constructor takes an existing buffer to write to. + * + * \param data The existing buffer + * \param length The length of the existing buffer + */ + BinaryWriter(const Uint8* data, Uint64 length); + + /*! \brief This constructor takes an existing Stream to write to. + * + * \param stream The stream to write data to + */ + BinaryWriter(const Stream& stream); + /*! \brief This constructor creates an instance from a file on disk. + * + * \param filename The file to create the stream from + */ + BinaryWriter(const std::string& filename); + + /*! \brief Saves the file to the specified file. + * + * \param filename If not empty, the filename to save to + */ void save(const std::string& filename=""); - - void writeInt16(Int16); - void writeUInt16(Uint16); - void writeInt32(Int32); - void writeUInt32(Uint32); - void writeInt64(Int64); - void writeUInt64(Uint64); - void writeFloat(float); - void writeDouble(double); - void writeBool(bool); + + /*! \brief Writes an Int16 to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeInt16(Int16 val); + + /*! \brief Writes an Uint16 to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeUInt16(Uint16); + + /*! \brief Writes an Int32 to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeInt32(Int32); + + /*! \brief Writes an Uint32 to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeUInt32(Uint32); + + /*! \brief Writes an Int64 to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeInt64(Int64); + + /*! \brief Writes an Uint64 to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeUInt64(Uint64); + + /*! \brief Writes an float to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeFloat(float); + + /*! \brief Writes an double to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeDouble(double); + + /*! \brief Writes an bool to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param val The value to write to the buffer + */ + void writeBool(bool); + + /*! \brief Writes an unicode string to the buffer and advances the buffer. + * It also swaps the bytes depending on the platform and Stream settings. + * + * \sa Endian + * \param str The string to write to the buffer + */ void writeUnicode(const std::string& str); private: Int8 readByte(); diff --git a/include/Exception.hpp b/include/Exception.hpp index 9f1b61a..74011b5 100644 --- a/include/Exception.hpp +++ b/include/Exception.hpp @@ -1,15 +1,42 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see + #ifndef __EXCEPTION_HPP__ #define __EXCEPTION_HPP__ #include - + +/*! \class Exception + * \brief The baseclass for all Exceptions. + * + * Do Not use Exception directly, instead create an appropriate + * Exception class and inherit from this baseclass. + */ class Exception { -public: +public: + /*! \brief The constructor for an Exception + * \param message The error message to throw + */ Exception(const std::string& message) : m_message(message) {}; - + + /*! \brief Returns the Error message of the exception + * \return std::string The error message + */ std::string message() const { return m_message; diff --git a/include/FileNotFoundException.hpp b/include/FileNotFoundException.hpp index d2aef89..ba6a059 100644 --- a/include/FileNotFoundException.hpp +++ b/include/FileNotFoundException.hpp @@ -1,16 +1,47 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see + #ifndef __FILENOTFOUNDEXCEPTION_HPP__ #define __FILENOTFOUNDEXCEPTION_HPP__ #include "Exception.hpp" - + +/*! \class FileNotFoundException + * \brief An excpeption thrown when a file could not be found at the given path. + * + * This should only be thrown when the library tries to write to a buffer + * e.g when the position is greater than the position and the stream + * is not set to autoresize.
+ *
+ * It is NOT appropriate to use throw new so avoid doing so, + * keeping things on the stack as much as possible is very important for speed. + */ class FileNotFoundException : public Exception { -public: +public: + /*! \brief The constructor for an FileNotFoundException + * \param filename The path of the offending file. + */ FileNotFoundException(const std::string& filename) : Exception("FileNotFoundException:\nCouldn't not find \"" + filename + "\", please check that it exists."), m_filename(filename) {} - + + /*! \brief Returns the path of the offending file. + * \return std::string The filename of the file including the path. + */ std::string filename() const { return m_filename; } private: std::string m_filename; diff --git a/include/IOException.hpp b/include/IOException.hpp index 88a2b99..51d6966 100644 --- a/include/IOException.hpp +++ b/include/IOException.hpp @@ -1,11 +1,40 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see + #ifndef __IOEXCEPTION_HPP__ #define __IOEXCEPTION_HPP__ #include "Exception.hpp" - + + +/*! \class IOException + * \brief An excpeption thrown on inappropriate IO calls. + * + * This should only be thrown when the library tries to write to a buffer + * e.g when the position is greater than the position and the stream + * is not set to autoresize.
+ *
+ * It is NOT appropriate to use throw new so avoid doing so, + * keeping things on the stack as much as possible is very important for speed. + */ class IOException : public Exception { -public: +public: + /*! \brief The constructor for an IOException + * \param message The error message to throw + */ IOException(const std::string& message) : Exception("IOException: " + message) {}; diff --git a/include/InvalidOperationException.hpp b/include/InvalidOperationException.hpp index 36fb95b..ce5f753 100644 --- a/include/InvalidOperationException.hpp +++ b/include/InvalidOperationException.hpp @@ -1,12 +1,39 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see + #ifndef __INVALID_OPERATION_EXCEPTION_HPP__ #define __INVALID_OPERATION_EXCEPTION_HPP__ #include #include - + +/*! \class InvalidOperationException + * \brief An excpeption thrown on Invalid Operations calls. + * + * This should only be thrown when the library tries to + * e.g pass a NULL pointer to a function which requires a valid pointer. + *
+ * It is NOT appropriate to use throw new so avoid doing so, + * keeping things on the stack as much as possible is very important for speed. + */ class InvalidOperationException : public Exception { -public: +public: + /*! \brief The constructor for an InvalidOperationException + * \param error The error message to throw + */ InvalidOperationException(const std::string& error) : Exception("InvalidOperationException:\n" + error) { diff --git a/include/Stream.hpp b/include/Stream.hpp index d4e6bdf..2312d32 100644 --- a/include/Stream.hpp +++ b/include/Stream.hpp @@ -1,3 +1,17 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see #ifndef __STREAM_HPP__ #define __STREAM_HPP__ @@ -60,7 +74,11 @@ public: * * \param stream The stream to read data from */ - Stream(Stream* stream); + Stream(Stream* stream); + + /*! \brief The destructor cleans up memory and sets everything back + * to the default settings. + */ virtual ~Stream(); /*! \brief Writes a bit at the current position and advances the position by one bit. diff --git a/include/Types.hpp b/include/Types.hpp index 739e934..75f23f5 100644 --- a/include/Types.hpp +++ b/include/Types.hpp @@ -1,3 +1,17 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see #ifndef __TYPES_HPP__ #define __TYPES_HPP__ diff --git a/libzelda.depend b/libzelda.depend deleted file mode 100644 index a6cce7d..0000000 --- a/libzelda.depend +++ /dev/null @@ -1,160 +0,0 @@ -# depslib dependency file v1.0 -1359172369 source:/home/antidote/trunk/save editor/libzelda/src/BinaryReader.cpp - "BinaryReader.hpp" - "IOException.hpp" - "FileNotFoundException.hpp" - "utility.hpp" - "utf8.h" - - - - -1359171705 /home/antidote/trunk/save editor/libzelda/include/BinaryReader.hpp - "Stream.hpp" - - -1358872986 /home/antidote/trunk/save editor/libzelda/include/Stream.hpp - "Types.hpp" - -1358872986 /home/antidote/trunk/save editor/libzelda/include/Types.hpp - - -1358872986 /home/antidote/trunk/save editor/libzelda/include/IOException.hpp - "Exception.hpp" - -1358872986 /home/antidote/trunk/save editor/libzelda/include/Exception.hpp - - -1358872986 /home/antidote/trunk/save editor/libzelda/include/FileNotFoundException.hpp - "Exception.hpp" - -1359171946 /home/antidote/trunk/save editor/libzelda/include/utility.hpp - - "Types.hpp" - -1358872986 /home/antidote/trunk/save editor/libzelda/include/utf8.h - "utf8/checked.h" - "utf8/unchecked.h" - -1358872986 /home/antidote/trunk/save editor/libzelda/include/utf8/checked.h - "core.h" - - -1358872986 /home/antidote/trunk/save editor/libzelda/include/utf8/core.h - - -1358872986 /home/antidote/trunk/save editor/libzelda/include/utf8/unchecked.h - "core.h" - -1359172754 source:/home/antidote/trunk/save editor/libzelda/src/BinaryWriter.cpp - "BinaryWriter.hpp" - "IOException.hpp" - "FileNotFoundException.hpp" - "utility.hpp" - "utf8.h" - - - - - -1358872986 /home/antidote/trunk/save editor/libzelda/include/BinaryWriter.hpp - "Stream.hpp" - - -1358872986 source:/home/antidote/trunk/save editor/libzelda/src/Stream.cpp - "Stream.hpp" - "IOException.hpp" - "InvalidOperationException.hpp" - - - -1358872986 /home/antidote/trunk/save editor/libzelda/include/InvalidOperationException.hpp - - - -1359219210 source:/home/antidote/trunk/save editor/libzelda/src/utility.cpp - "utility.hpp" - - - - -1359243487 source:/home/antidote/wiiking2_editor/libzelda/src/BinaryWriter.cpp - "BinaryWriter.hpp" - "IOException.hpp" - "FileNotFoundException.hpp" - "utility.hpp" - "utf8.h" - - - - - -1359245518 /home/antidote/wiiking2_editor/libzelda/include/BinaryWriter.hpp - "Stream.hpp" - - -1359243334 /home/antidote/wiiking2_editor/libzelda/include/Stream.hpp - "Types.hpp" - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/Types.hpp - - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/IOException.hpp - "Exception.hpp" - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/Exception.hpp - - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/FileNotFoundException.hpp - "Exception.hpp" - -1359171946 /home/antidote/wiiking2_editor/libzelda/include/utility.hpp - - "Types.hpp" - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/utf8.h - "utf8/checked.h" - "utf8/unchecked.h" - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/utf8/checked.h - "core.h" - - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/utf8/core.h - - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/utf8/unchecked.h - "core.h" - -1359243354 source:/home/antidote/wiiking2_editor/libzelda/src/Stream.cpp - "Stream.hpp" - "IOException.hpp" - "InvalidOperationException.hpp" - - - -1358872986 /home/antidote/wiiking2_editor/libzelda/include/InvalidOperationException.hpp - - - -1359219210 source:/home/antidote/wiiking2_editor/libzelda/src/utility.cpp - "utility.hpp" - - - - -1359243404 source:/home/antidote/wiiking2_editor/libzelda/src/BinaryReader.cpp - "BinaryReader.hpp" - "IOException.hpp" - "FileNotFoundException.hpp" - "utility.hpp" - "utf8.h" - - - - - -1359220647 /home/antidote/wiiking2_editor/libzelda/include/BinaryReader.hpp - "Stream.hpp" - - diff --git a/libzelda.layout b/libzelda.layout deleted file mode 100644 index 85d4c82..0000000 --- a/libzelda.layout +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/BinaryReader.cpp b/src/BinaryReader.cpp index 3969098..716fb29 100644 --- a/src/BinaryReader.cpp +++ b/src/BinaryReader.cpp @@ -1,3 +1,18 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see + #include "BinaryReader.hpp" #include "IOException.hpp" #include "FileNotFoundException.hpp" diff --git a/src/BinaryWriter.cpp b/src/BinaryWriter.cpp index 10b4383..d6a44bd 100644 --- a/src/BinaryWriter.cpp +++ b/src/BinaryWriter.cpp @@ -1,3 +1,18 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see + #include "BinaryWriter.hpp" #include "IOException.hpp" #include "FileNotFoundException.hpp" diff --git a/src/Stream.cpp b/src/Stream.cpp index 3b5ac76..79ad90f 100644 --- a/src/Stream.cpp +++ b/src/Stream.cpp @@ -1,3 +1,18 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see + #include "Stream.hpp" #include "IOException.hpp" #include "InvalidOperationException.hpp" diff --git a/src/utility.cpp b/src/utility.cpp index 74eae0d..2bd5ace 100644 --- a/src/utility.cpp +++ b/src/utility.cpp @@ -1,3 +1,18 @@ +// This file is part of libZelda. +// +// libZelda is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// libZelda 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with libZelda. If not, see + #include "utility.hpp" #include #include