/[svn]/libgig/trunk/src/Serialization.cpp
ViewVC logotype

Diff of /libgig/trunk/src/Serialization.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3186 by schoenebeck, Wed May 17 15:55:18 2017 UTC revision 3392 by schoenebeck, Sun Dec 3 17:49:22 2017 UTC
# Line 21  Line 21 
21   *   MA  02111-1307  USA                                                   *   *   MA  02111-1307  USA                                                   *
22   ***************************************************************************/   ***************************************************************************/
23    
24    // enable implementation specific declarations in Serialization.h required to
25    // build this C++ unit, which should be ignored in the public API though
26    #define LIBGIG_SERIALIZATION_INTERNAL 1
27    
28  #include "Serialization.h"  #include "Serialization.h"
29    
30  #include <iostream>  #include <iostream>
# Line 250  namespace Serialization { Line 254  namespace Serialization {
254       * characteristic is compared as well. So a @c double type and @c double*       * characteristic is compared as well. So a @c double type and @c double*
255       * type are also considered to be not equal data types and hence this method       * type are also considered to be not equal data types and hence this method
256       * would return @c false.       * would return @c false.
257         *
258         * As an exception here, classes and structs with the same class/struct name
259         * but different sizes are also considered to be "equal". This relaxed
260         * requirement is necessary to retain backward compatiblity to older
261         * versions of the same native C++ classes/structs.
262       */       */
263      bool DataType::operator==(const DataType& other) const {      bool DataType::operator==(const DataType& other) const {
264          return m_baseTypeName   == other.m_baseTypeName &&          return m_baseTypeName   == other.m_baseTypeName &&
265                 m_customTypeName == other.m_customTypeName &&                 m_customTypeName == other.m_customTypeName &&
266                 m_size           == other.m_size &&                 (m_size == other.m_size || (isClass() && other.isClass())) &&
267                 m_isPointer      == other.m_isPointer;                 m_isPointer      == other.m_isPointer;
268      }      }
269    
# Line 1409  namespace Serialization { Line 1418  namespace Serialization {
1418          return (time_t) i;          return (time_t) i;
1419      }      }
1420    
1421      DataType _popDataTypeBlob(const char*& p, const char* end) {      static DataType _popDataTypeBlob(const char*& p, const char* end) {
1422          _Blob blob = _decodeBlob(p, end);          _Blob blob = _decodeBlob(p, end);
1423          p   = blob.p;          p   = blob.p;
1424          end = blob.end;          end = blob.end;
# Line 2286  namespace Serialization { Line 2295  namespace Serialization {
2295      // *************** Exception ***************      // *************** Exception ***************
2296      // *      // *
2297    
2298        Exception::Exception() {
2299        }
2300    
2301        Exception::Exception(String format, ...) {
2302            va_list arg;
2303            va_start(arg, format);
2304            Message = assemble(format, arg);
2305            va_end(arg);
2306        }
2307    
2308        Exception::Exception(String format, va_list arg) {
2309            Message = assemble(format, arg);
2310        }
2311    
2312      /** @brief Print exception message to stdout.      /** @brief Print exception message to stdout.
2313       *       *
2314       * Prints the message of this Exception to the currently defined standard       * Prints the message of this Exception to the currently defined standard
# Line 2295  namespace Serialization { Line 2318  namespace Serialization {
2318          std::cout << "Serialization::Exception: " << Message << std::endl;          std::cout << "Serialization::Exception: " << Message << std::endl;
2319      }      }
2320    
2321        String Exception::assemble(String format, va_list arg) {
2322            char* buf = NULL;
2323            vasprintf(&buf, format.c_str(), arg);
2324            String s = buf;
2325            free(buf);
2326            return s;
2327        }
2328    
2329  } // namespace Serialization  } // namespace Serialization

Legend:
Removed from v.3186  
changed lines
  Added in v.3392

  ViewVC Help
Powered by ViewVC