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> |
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 |
|
|
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; |
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 |
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 |