diff --git a/include/msgpack.hpp b/include/msgpack.hpp index 62d4b3d3..f2f729e9 100644 --- a/include/msgpack.hpp +++ b/include/msgpack.hpp @@ -16,6 +16,7 @@ // limitations under the License. // #include "msgpack/object.hpp" +#include "msgpack/iterator.hpp" #include "msgpack/zone.hpp" #include "msgpack/pack.hpp" #include "msgpack/unpack.hpp" diff --git a/include/msgpack/iterator.hpp b/include/msgpack/iterator.hpp new file mode 100644 index 00000000..7b538ccc --- /dev/null +++ b/include/msgpack/iterator.hpp @@ -0,0 +1,37 @@ +// +// MessagePack for C++ static resolution routine +// +// Copyright (C) 2015 MIZUKI Hirata +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef MSGPACK_ITERATOR_HPP +#define MSGPACK_ITERATOR_HPP +#if !defined(MSGPACK_USE_CPP03) + +namespace msgpack +{ + inline object_kv* begin(object_map &map) { return map.ptr; } + inline const object_kv* begin(const object_map &map) { return map.ptr; } + inline object_kv* end(object_map &map) { return map.ptr + map.size; } + inline const object_kv* end(const object_map &map) { return map.ptr + map.size; } + + inline object* begin(object_array &array) { return array.ptr; } + inline const object* begin(const object_array &array) { return array.ptr; } + inline object* end(object_array &array) { return array.ptr + array.size; } + inline const object* end(const object_array &array) { return array.ptr + array.size; } +} + +#endif // !defined(MSGPACK_USE_CPP03) +#endif // MSGPACK_ITERATOR_HPP diff --git a/include/msgpack_fwd.hpp b/include/msgpack_fwd.hpp index f42ae169..b41cb1ae 100644 --- a/include/msgpack_fwd.hpp +++ b/include/msgpack_fwd.hpp @@ -21,6 +21,7 @@ #include "msgpack/versioning.hpp" #include "msgpack/zone.hpp" #include "msgpack/object_fwd.hpp" +#include "msgpack/iterator.hpp" #include "msgpack/adaptor/define.hpp" #include "msgpack/pack.hpp" diff --git a/src/Makefile.am b/src/Makefile.am index fe950eaf..b39f256c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -113,6 +113,7 @@ nobase_include_HEADERS += \ ../include/msgpack/detail/cpp03_zone.hpp \ ../include/msgpack/detail/cpp11_zone.hpp \ ../include/msgpack/fbuffer.hpp \ + ../include/msgpack/iterator.hpp \ ../include/msgpack/object.hpp \ ../include/msgpack/object_fwd.hpp \ ../include/msgpack/pack.hpp \