summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrsyuki <frsyuki@users.sourceforge.jp>2010-02-02 10:52:42 +0900
committerfrsyuki <frsyuki@users.sourceforge.jp>2010-02-02 10:52:42 +0900
commit7df60b259b55b6294c19315350ec312809107117 (patch)
tree0e8c2ef3ff2a409169363f23cde83a1668cfd7a3
parent34b3bbc8839f63e3e624dc0ce42525657cdcdfa7 (diff)
downloadmsgpack-python-7df60b259b55b6294c19315350ec312809107117.tar.gz
MSVC2005 compatibility (@hotpepsi++)
-rw-r--r--c/object.h1
-rw-r--r--c/zone.c4
-rw-r--r--c/zone.h1
-rw-r--r--cpp/type/vector.hpp14
-rw-r--r--msgpack/sysdep.h11
5 files changed, 21 insertions, 10 deletions
diff --git a/c/object.h b/c/object.h
index 27b593e..9a014be 100644
--- a/c/object.h
+++ b/c/object.h
@@ -19,7 +19,6 @@
#define MSGPACK_OBJECT_H__
#include "msgpack/zone.h"
-#include "msgpack/sysdep.h"
#include <stdio.h>
#ifdef __cplusplus
diff --git a/c/zone.c b/c/zone.c
index 2d8bc58..3d0634e 100644
--- a/c/zone.c
+++ b/c/zone.c
@@ -104,7 +104,6 @@ static inline void init_finalizer_array(msgpack_zone_finalizer_array* fa)
static inline void call_finalizer_array(msgpack_zone_finalizer_array* fa)
{
- // 逆順に呼び出し
msgpack_zone_finalizer* fin = fa->tail;
for(; fin != fa->array; --fin) {
(*(fin-1)->func)((fin-1)->data);
@@ -132,9 +131,6 @@ bool msgpack_zone_push_finalizer_expand(msgpack_zone* zone,
size_t nnext;
if(nused == 0) {
- // 初回の呼び出し:fa->tail == fa->end == fa->array == NULL
-
- // glibcは72バイト以下のmallocが高速
nnext = (sizeof(msgpack_zone_finalizer) < 72/2) ?
72 / sizeof(msgpack_zone_finalizer) : 8;
diff --git a/c/zone.h b/c/zone.h
index e07e762..475ae51 100644
--- a/c/zone.h
+++ b/c/zone.h
@@ -18,6 +18,7 @@
#ifndef MSGPACK_ZONE_H__
#define MSGPACK_ZONE_H__
+#include "msgpack/sysdep.h"
#include <stddef.h>
#include <stdbool.h>
diff --git a/cpp/type/vector.hpp b/cpp/type/vector.hpp
index 754cdc0..385d070 100644
--- a/cpp/type/vector.hpp
+++ b/cpp/type/vector.hpp
@@ -29,11 +29,15 @@ inline std::vector<T>& operator>> (object o, std::vector<T>& v)
{
if(o.type != type::ARRAY) { throw type_error(); }
v.resize(o.via.array.size);
- object* p = o.via.array.ptr;
- object* const pend = o.via.array.ptr + o.via.array.size;
- T* it = &v.front();
- for(; p < pend; ++p, ++it) {
- p->convert(it);
+ if(o.via.array.size > 0) {
+ object* p = o.via.array.ptr;
+ object* const pend = o.via.array.ptr + o.via.array.size;
+ T* it = &v[0];
+ do {
+ p->convert(it);
+ ++p;
+ ++it;
+ } while(p < pend);
}
return v;
}
diff --git a/msgpack/sysdep.h b/msgpack/sysdep.h
index 106158e..e9540d5 100644
--- a/msgpack/sysdep.h
+++ b/msgpack/sysdep.h
@@ -46,6 +46,17 @@ typedef unsigned int _msgpack_atomic_counter_t;
#endif
+#ifdef __cplusplus
+/* numeric_limits<T>::min,max */
+#ifdef max
+#undef max
+#endif
+#ifdef min
+#undef min
+#endif
+#endif
+
+
#ifdef _WIN32
#include <winsock2.h>
#else