rroonga 5.0.1-x64-mingw32 → 5.0.2-x64-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +1 -1
- data/ext/groonga/rb-grn-logger.c +159 -3
- data/ext/groonga/rb-grn-plugin.c +17 -1
- data/ext/groonga/rb-grn-query-logger.c +129 -3
- data/ext/groonga/rb-grn.h +1 -1
- data/lib/1.9/groonga.so +0 -0
- data/lib/2.0/groonga.so +0 -0
- data/lib/2.1/groonga.so +0 -0
- data/lib/2.2/groonga.so +0 -0
- data/lib/groonga/query-logger.rb +48 -3
- data/lib/groonga/schema.rb +16 -3
- data/rroonga-build.rb +3 -3
- data/test/test-logger.rb +97 -2
- data/test/test-plugin.rb +5 -1
- data/test/test-query-logger.rb +149 -0
- data/test/test-schema.rb +19 -0
- data/vendor/local/bin/grndb.exe +0 -0
- data/vendor/local/bin/groonga-benchmark.exe +0 -0
- data/vendor/local/bin/groonga.exe +0 -0
- data/vendor/local/bin/libgroonga-0.dll +0 -0
- data/vendor/local/bin/libmecab-1.dll +0 -0
- data/vendor/local/bin/libmsgpack-4.dll +0 -0
- data/vendor/local/bin/libmsgpackc-2.dll +0 -0
- data/vendor/local/bin/libonig-5.dll +0 -0
- data/vendor/local/bin/lz4.exe +0 -0
- data/vendor/local/bin/lz4c.exe +0 -0
- data/vendor/local/bin/lz4cat +0 -0
- data/vendor/local/bin/mecab-config +2 -2
- data/vendor/local/bin/mecab.exe +0 -0
- data/vendor/local/bin/onig-config +1 -1
- data/vendor/local/bin/zlib1.dll +0 -0
- data/vendor/local/etc/groonga/httpd/groonga-httpd.conf +2 -2
- data/vendor/local/include/groonga/groonga.h +1 -0
- data/vendor/local/include/groonga/groonga/groonga.h +12 -6
- data/vendor/local/include/groonga/groonga/portability.h +158 -0
- data/vendor/local/include/msgpack.h +1 -0
- data/vendor/local/include/msgpack.hpp +2 -1
- data/vendor/local/include/msgpack/adaptor/bool.hpp +58 -0
- data/vendor/local/include/msgpack/{type/bool.hpp → adaptor/bool_fwd.hpp} +11 -27
- data/vendor/local/include/msgpack/adaptor/char_ptr.hpp +78 -0
- data/vendor/local/include/msgpack/adaptor/char_ptr_fwd.hpp +43 -0
- data/vendor/local/include/msgpack/adaptor/check_container_size.hpp +61 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/array.hpp +76 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/array_char.hpp +84 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/array_char_fwd.hpp +45 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/array_fwd.hpp +44 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/forward_list.hpp +75 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/forward_list_fwd.hpp +44 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/tuple.hpp +152 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/tuple_fwd.hpp +62 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/unordered_map.hpp +142 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/unordered_map_fwd.hpp +53 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/unordered_set.hpp +134 -0
- data/vendor/local/include/msgpack/adaptor/cpp11/unordered_set_fwd.hpp +52 -0
- data/vendor/local/include/msgpack/adaptor/define.hpp +29 -0
- data/vendor/local/include/msgpack/adaptor/deque.hpp +83 -0
- data/vendor/local/include/msgpack/adaptor/deque_fwd.hpp +40 -0
- data/vendor/local/include/msgpack/adaptor/detail/cpp03_define.hpp +3475 -0
- data/vendor/local/include/msgpack/adaptor/detail/cpp03_msgpack_tuple.hpp +13918 -0
- data/vendor/local/include/msgpack/adaptor/detail/cpp03_msgpack_tuple_fwd.hpp +4341 -0
- data/vendor/local/include/msgpack/adaptor/detail/cpp11_define.hpp +184 -0
- data/vendor/local/include/msgpack/adaptor/detail/cpp11_msgpack_tuple.hpp +212 -0
- data/vendor/local/include/msgpack/adaptor/detail/cpp11_msgpack_tuple_fwd.hpp +84 -0
- data/vendor/local/include/msgpack/adaptor/fixint.hpp +212 -0
- data/vendor/local/include/msgpack/adaptor/fixint_fwd.hpp +100 -0
- data/vendor/local/include/msgpack/adaptor/float.hpp +105 -0
- data/vendor/local/include/msgpack/adaptor/float_fwd.hpp +44 -0
- data/vendor/local/include/msgpack/adaptor/int.hpp +308 -0
- data/vendor/local/include/msgpack/adaptor/int_fwd.hpp +100 -0
- data/vendor/local/include/msgpack/adaptor/list.hpp +83 -0
- data/vendor/local/include/msgpack/adaptor/list_fwd.hpp +40 -0
- data/vendor/local/include/msgpack/adaptor/map.hpp +219 -0
- data/vendor/local/include/msgpack/adaptor/map_fwd.hpp +69 -0
- data/vendor/local/include/msgpack/adaptor/msgpack_tuple.hpp +29 -0
- data/vendor/local/include/msgpack/adaptor/msgpack_tuple_fwd.hpp +29 -0
- data/vendor/local/include/msgpack/adaptor/nil.hpp +68 -0
- data/vendor/local/include/msgpack/adaptor/nil_fwd.hpp +51 -0
- data/vendor/local/include/msgpack/adaptor/pair.hpp +63 -0
- data/vendor/local/include/msgpack/{type/pair.hpp → adaptor/pair_fwd.hpp} +10 -29
- data/vendor/local/include/msgpack/adaptor/raw.hpp +98 -0
- data/vendor/local/include/msgpack/{type/nil.hpp → adaptor/raw_fwd.hpp} +15 -30
- data/vendor/local/include/msgpack/adaptor/set.hpp +134 -0
- data/vendor/local/include/msgpack/adaptor/set_fwd.hpp +52 -0
- data/vendor/local/include/msgpack/adaptor/string.hpp +78 -0
- data/vendor/local/include/msgpack/adaptor/string_fwd.hpp +42 -0
- data/vendor/local/include/msgpack/adaptor/tr1/unordered_map.hpp +164 -0
- data/vendor/local/include/msgpack/adaptor/tr1/unordered_map_fwd.hpp +75 -0
- data/vendor/local/include/msgpack/adaptor/tr1/unordered_set.hpp +157 -0
- data/vendor/local/include/msgpack/adaptor/tr1/unordered_set_fwd.hpp +75 -0
- data/vendor/local/include/msgpack/adaptor/vector.hpp +87 -0
- data/vendor/local/include/msgpack/adaptor/vector_bool.hpp +80 -0
- data/vendor/local/include/msgpack/adaptor/vector_bool_fwd.hpp +40 -0
- data/vendor/local/include/msgpack/adaptor/vector_char.hpp +81 -0
- data/vendor/local/include/msgpack/adaptor/vector_char_fwd.hpp +42 -0
- data/vendor/local/include/msgpack/adaptor/vector_fwd.hpp +42 -0
- data/vendor/local/include/msgpack/cpp_config.hpp +109 -0
- data/vendor/local/include/msgpack/detail/cpp03_zone.hpp +662 -0
- data/vendor/local/include/msgpack/detail/cpp11_zone.hpp +368 -0
- data/vendor/local/include/msgpack/fbuffer.h +3 -4
- data/vendor/local/include/msgpack/fbuffer.hpp +24 -16
- data/vendor/local/include/msgpack/gcc_atomic.h +33 -0
- data/vendor/local/include/msgpack/iterator.hpp +42 -0
- data/vendor/local/include/msgpack/object.h +51 -30
- data/vendor/local/include/msgpack/object.hpp +564 -273
- data/vendor/local/include/msgpack/object_fwd.hpp +182 -0
- data/vendor/local/include/msgpack/pack.h +23 -17
- data/vendor/local/include/msgpack/pack.hpp +889 -164
- data/vendor/local/include/msgpack/pack_define.h +2 -2
- data/vendor/local/include/msgpack/pack_template.h +452 -356
- data/vendor/local/include/msgpack/sbuffer.h +43 -37
- data/vendor/local/include/msgpack/sbuffer.hpp +98 -76
- data/vendor/local/include/msgpack/sysdep.h +48 -53
- data/vendor/local/include/msgpack/type.hpp +35 -17
- data/vendor/local/include/msgpack/unpack.h +62 -44
- data/vendor/local/include/msgpack/unpack.hpp +1578 -217
- data/vendor/local/include/msgpack/unpack_define.h +49 -47
- data/vendor/local/include/msgpack/unpack_template.h +344 -284
- data/vendor/local/include/msgpack/util.h +23 -0
- data/vendor/local/include/msgpack/version.h +12 -6
- data/vendor/local/include/msgpack/version.hpp +44 -0
- data/vendor/local/include/msgpack/version_master.h +3 -0
- data/vendor/local/include/msgpack/versioning.hpp +77 -0
- data/vendor/local/include/msgpack/vrefbuffer.h +40 -34
- data/vendor/local/include/msgpack/vrefbuffer.hpp +261 -64
- data/vendor/local/include/msgpack/zbuffer.h +79 -79
- data/vendor/local/include/msgpack/zbuffer.hpp +136 -67
- data/vendor/local/include/msgpack/zone.h +65 -42
- data/vendor/local/include/msgpack/zone.hpp +10 -445
- data/vendor/local/include/msgpack_fwd.hpp +28 -0
- data/vendor/local/lib/groonga/plugins/functions/vector.a +0 -0
- data/vendor/local/lib/groonga/plugins/functions/vector.dll +0 -0
- data/vendor/local/lib/groonga/plugins/functions/vector.dll.a +0 -0
- data/vendor/local/lib/groonga/plugins/functions/vector.la +41 -0
- data/vendor/local/lib/groonga/plugins/query_expanders/tsv.a +0 -0
- data/vendor/local/lib/groonga/plugins/query_expanders/tsv.dll +0 -0
- data/vendor/local/lib/groonga/plugins/query_expanders/tsv.dll.a +0 -0
- data/vendor/local/lib/groonga/plugins/query_expanders/tsv.la +2 -2
- data/vendor/local/lib/groonga/plugins/ruby/eval.a +0 -0
- data/vendor/local/lib/groonga/plugins/ruby/eval.dll +0 -0
- data/vendor/local/lib/groonga/plugins/ruby/eval.dll.a +0 -0
- data/vendor/local/lib/groonga/plugins/ruby/eval.la +2 -2
- data/vendor/local/lib/groonga/plugins/ruby/load.a +0 -0
- data/vendor/local/lib/groonga/plugins/ruby/load.dll +0 -0
- data/vendor/local/lib/groonga/plugins/ruby/load.dll.a +0 -0
- data/vendor/local/lib/groonga/plugins/ruby/load.la +2 -2
- data/vendor/local/lib/groonga/plugins/sharding.rb +1 -0
- data/vendor/local/lib/groonga/plugins/sharding/logical_count.rb +17 -45
- data/vendor/local/lib/groonga/plugins/sharding/logical_enumerator.rb +15 -6
- data/vendor/local/lib/groonga/plugins/sharding/logical_range_filter.rb +63 -75
- data/vendor/local/lib/groonga/plugins/sharding/range_expression_builder.rb +65 -0
- data/vendor/local/lib/groonga/plugins/suggest/suggest.a +0 -0
- data/vendor/local/lib/groonga/plugins/suggest/suggest.dll +0 -0
- data/vendor/local/lib/groonga/plugins/suggest/suggest.dll.a +0 -0
- data/vendor/local/lib/groonga/plugins/suggest/suggest.la +2 -2
- data/vendor/local/lib/groonga/plugins/table/table.a +0 -0
- data/vendor/local/lib/groonga/plugins/table/table.dll +0 -0
- data/vendor/local/lib/groonga/plugins/table/table.dll.a +0 -0
- data/vendor/local/lib/groonga/plugins/table/table.la +2 -2
- data/vendor/local/lib/groonga/plugins/token_filters/stop_word.a +0 -0
- data/vendor/local/lib/groonga/plugins/token_filters/stop_word.dll +0 -0
- data/vendor/local/lib/groonga/plugins/token_filters/stop_word.dll.a +0 -0
- data/vendor/local/lib/groonga/plugins/token_filters/stop_word.la +2 -2
- data/vendor/local/lib/groonga/plugins/tokenizers/mecab.a +0 -0
- data/vendor/local/lib/groonga/plugins/tokenizers/mecab.dll +0 -0
- data/vendor/local/lib/groonga/plugins/tokenizers/mecab.dll.a +0 -0
- data/vendor/local/lib/groonga/plugins/tokenizers/mecab.la +2 -2
- data/vendor/local/lib/groonga/scripts/ruby/expression_size_estimator.rb +38 -41
- data/vendor/local/lib/groonga/scripts/ruby/scan_info_data.rb +3 -0
- data/vendor/local/lib/libgroonga.a +0 -0
- data/vendor/local/lib/libgroonga.dll.a +0 -0
- data/vendor/local/lib/libgroonga.la +2 -2
- data/vendor/local/lib/liblz4.a +0 -0
- data/vendor/local/lib/liblz4.dll +0 -0
- data/vendor/local/lib/liblz4.dll.1 +0 -0
- data/vendor/local/lib/liblz4.dll.1.5.0 +0 -0
- data/vendor/local/lib/libmecab.a +0 -0
- data/vendor/local/lib/libmecab.dll.a +0 -0
- data/vendor/local/lib/libmecab.la +2 -2
- data/vendor/local/lib/libmsgpack.a +0 -0
- data/vendor/local/lib/libmsgpack.dll.a +0 -0
- data/vendor/local/lib/libmsgpack.la +4 -4
- data/vendor/local/lib/libmsgpackc.a +0 -0
- data/vendor/local/lib/libmsgpackc.dll.a +0 -0
- data/vendor/local/lib/libmsgpackc.la +2 -2
- data/vendor/local/lib/libonig.a +0 -0
- data/vendor/local/lib/libonig.dll.a +0 -0
- data/vendor/local/lib/libonig.la +2 -2
- data/vendor/local/lib/libz.a +0 -0
- data/vendor/local/lib/libz.dll.a +0 -0
- data/vendor/local/lib/pkgconfig/groonga.pc +3 -3
- data/vendor/local/lib/pkgconfig/liblz4.pc +5 -5
- data/vendor/local/lib/pkgconfig/msgpack.pc +2 -2
- data/vendor/local/lib/pkgconfig/oniguruma.pc +6 -6
- data/vendor/local/lib/pkgconfig/zlib.pc +3 -3
- data/vendor/local/libexec/mecab/mecab-cost-train.exe +0 -0
- data/vendor/local/libexec/mecab/mecab-dict-gen.exe +0 -0
- data/vendor/local/libexec/mecab/mecab-dict-index.exe +0 -0
- data/vendor/local/libexec/mecab/mecab-system-eval.exe +0 -0
- data/vendor/local/libexec/mecab/mecab-test-gen.exe +0 -0
- data/vendor/local/sbin/groonga-httpd-restart +1 -1
- data/vendor/local/sbin/groonga-httpd.exe +0 -0
- data/vendor/local/share/doc/groonga/en/html/.buildinfo +1 -1
- data/vendor/local/share/doc/groonga/en/html/_sources/contribution/development/release.txt +69 -52
- data/vendor/local/share/doc/groonga/en/html/_sources/install/centos.txt +6 -6
- data/vendor/local/share/doc/groonga/en/html/_sources/install/debian.txt +56 -5
- data/vendor/local/share/doc/groonga/en/html/_sources/install/fedora.txt +4 -4
- data/vendor/local/share/doc/groonga/en/html/_sources/install/mac_os_x.txt +3 -3
- data/vendor/local/share/doc/groonga/en/html/_sources/install/others.txt +7 -7
- data/vendor/local/share/doc/groonga/en/html/_sources/install/solaris.txt +3 -3
- data/vendor/local/share/doc/groonga/en/html/_sources/install/ubuntu.txt +6 -5
- data/vendor/local/share/doc/groonga/en/html/_sources/install/windows.txt +14 -14
- data/vendor/local/share/doc/groonga/en/html/_sources/news.txt +93 -3
- data/vendor/local/share/doc/groonga/en/html/_sources/news/0.x.txt +2 -2
- data/vendor/local/share/doc/groonga/en/html/_sources/news/1.0.x.txt +9 -9
- data/vendor/local/share/doc/groonga/en/html/_sources/news/1.1.x.txt +1 -1
- data/vendor/local/share/doc/groonga/en/html/_sources/news/1.2.x.txt +10 -10
- data/vendor/local/share/doc/groonga/en/html/_sources/news/1.3.x.txt +1 -1
- data/vendor/local/share/doc/groonga/en/html/_sources/news/2.x.txt +13 -13
- data/vendor/local/share/doc/groonga/en/html/_sources/news/3.x.txt +13 -13
- data/vendor/local/share/doc/groonga/en/html/_sources/news/4.x.txt +9 -9
- data/vendor/local/share/doc/groonga/en/html/_sources/news/senna.txt +13 -13
- data/vendor/local/share/doc/groonga/en/html/_sources/reference/commands/dump.txt +135 -27
- data/vendor/local/share/doc/groonga/en/html/_sources/reference/commands/request_cancel.txt +1 -1
- data/vendor/local/share/doc/groonga/en/html/_sources/reference/executables/groonga.txt +148 -7
- data/vendor/local/share/doc/groonga/en/html/_sources/reference/functions/vector_size.txt +76 -0
- data/vendor/local/share/doc/groonga/en/html/_sources/reference/scorer.txt +2 -1
- data/vendor/local/share/doc/groonga/en/html/_sources/server/gqtp.txt +38 -6
- data/vendor/local/share/doc/groonga/en/html/_sources/spec/gqtp.txt +2 -1
- data/vendor/local/share/doc/groonga/en/html/_sources/tutorial/index.txt +6 -4
- data/vendor/local/share/doc/groonga/en/html/characteristic.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/client.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/community.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution.html +14 -13
- data/vendor/local/share/doc/groonga/en/html/contribution/development.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/development/com.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/development/cooperation.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/development/query.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/development/release.html +58 -42
- data/vendor/local/share/doc/groonga/en/html/contribution/development/repository.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/development/test.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/documentation.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/documentation/c-api.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/documentation/i18n.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/documentation/introduction.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/contribution/report.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/development.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/development/travis-ci.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/genindex.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/index.html +15 -9
- data/vendor/local/share/doc/groonga/en/html/install.html +8 -7
- data/vendor/local/share/doc/groonga/en/html/install/centos.html +12 -12
- data/vendor/local/share/doc/groonga/en/html/install/debian.html +70 -13
- data/vendor/local/share/doc/groonga/en/html/install/fedora.html +10 -10
- data/vendor/local/share/doc/groonga/en/html/install/mac_os_x.html +9 -9
- data/vendor/local/share/doc/groonga/en/html/install/others.html +17 -17
- data/vendor/local/share/doc/groonga/en/html/install/solaris.html +9 -9
- data/vendor/local/share/doc/groonga/en/html/install/ubuntu.html +12 -11
- data/vendor/local/share/doc/groonga/en/html/install/windows.html +21 -21
- data/vendor/local/share/doc/groonga/en/html/limitations.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/news.html +200 -103
- data/vendor/local/share/doc/groonga/en/html/news/0.x.html +10 -10
- data/vendor/local/share/doc/groonga/en/html/news/1.0.x.html +24 -24
- data/vendor/local/share/doc/groonga/en/html/news/1.1.x.html +8 -8
- data/vendor/local/share/doc/groonga/en/html/news/1.2.x.html +26 -26
- data/vendor/local/share/doc/groonga/en/html/news/1.3.x.html +8 -8
- data/vendor/local/share/doc/groonga/en/html/news/2.x.html +32 -32
- data/vendor/local/share/doc/groonga/en/html/news/3.x.html +32 -32
- data/vendor/local/share/doc/groonga/en/html/news/4.x.html +27 -27
- data/vendor/local/share/doc/groonga/en/html/news/senna.html +32 -32
- data/vendor/local/share/doc/groonga/en/html/objects.inv +0 -0
- data/vendor/local/share/doc/groonga/en/html/reference.html +8 -7
- data/vendor/local/share/doc/groonga/en/html/reference/api.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/global_configurations.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_cache.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_column.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_command_version.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_content_type.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_ctx.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_db.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_encoding.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_expr.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_geo.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_hook.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_ii.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_index_cursor.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_info.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_match_escalation.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_obj.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_proc.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_search.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_table.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_table_cursor.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_type.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/grn_user_data.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/overview.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/api/plugin.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/cast.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/column.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/columns/index.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/columns/pseudo.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/columns/scalar.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/columns/vector.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/command.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/command/command_version.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/command/output_format.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/command/request_id.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/command/return_code.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/cache_limit.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/check.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/clearlock.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/column_create.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/column_list.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/column_remove.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/column_rename.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/define_selector.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/defrag.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/delete.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/dump.html +141 -34
- data/vendor/local/share/doc/groonga/en/html/reference/commands/load.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/lock_clear.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/log_level.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/log_put.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/log_reopen.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_count.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_range_filter.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/normalize.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/normalizer_list.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/plugin_register.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/plugin_unregister.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/quit.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/range_filter.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/register.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/request_cancel.html +8 -8
- data/vendor/local/share/doc/groonga/en/html/reference/commands/ruby_eval.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/ruby_load.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/select.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/shutdown.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/status.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/suggest.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/table_create.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/table_list.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/table_remove.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/table_tokenize.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/tokenize.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/tokenizer_list.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/commands/truncate.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/executables.html +7 -7
- data/vendor/local/share/doc/groonga/en/html/reference/executables/grndb.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/executables/grnslap.html +10 -10
- data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-benchmark.html +10 -10
- data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-httpd.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-server-http.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-create-dataset.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-httpd.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-learner.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga.html +146 -14
- data/vendor/local/share/doc/groonga/en/html/reference/function.html +7 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/between.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/edit_distance.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_distance.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_in_circle.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_in_rectangle.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/highlight_full.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/highlight_html.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/html_untag.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/in_values.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/now.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/query.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/rand.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/snippet_html.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/functions/sub_filter.html +11 -11
- data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_size.html +248 -0
- data/vendor/local/share/doc/groonga/en/html/reference/grn_expr.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/grn_expr/query_syntax.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/grn_expr/script_syntax.html +7 -7
- data/vendor/local/share/doc/groonga/en/html/reference/indexing.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/log.html +7 -7
- data/vendor/local/share/doc/groonga/en/html/reference/normalizers.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/operations.html +11 -11
- data/vendor/local/share/doc/groonga/en/html/reference/operations/geolocation_search.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/output.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/query_expanders.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/query_expanders/tsv.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/regular_expression.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/scorer.html +8 -7
- data/vendor/local/share/doc/groonga/en/html/reference/scorers/scorer_tf_at_most.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/scorers/scorer_tf_idf.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/scoring_note.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/suggest.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/suggest/completion.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/suggest/correction.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/suggest/introduction.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/suggest/suggestion.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/tables.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/token_filters.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/tokenizers.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/tuning.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/reference/types.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/search.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/searchindex.js +1 -1
- data/vendor/local/share/doc/groonga/en/html/server.html +11 -7
- data/vendor/local/share/doc/groonga/en/html/server/gqtp.html +53 -8
- data/vendor/local/share/doc/groonga/en/html/server/http.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/server/http/comparison.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/server/http/groonga-httpd.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/server/http/groonga.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/server/memcached.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/server/package.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/spec.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/spec/gqtp.html +10 -7
- data/vendor/local/share/doc/groonga/en/html/spec/search.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/troubleshooting.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/troubleshooting/different_results_with_the_same_keyword.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/troubleshooting/mmap_cannot_allocate_memory.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/data.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/drilldown.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/index.html +15 -11
- data/vendor/local/share/doc/groonga/en/html/tutorial/introduction.html +7 -7
- data/vendor/local/share/doc/groonga/en/html/tutorial/lexicon.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/match_columns.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/micro_blog.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/network.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/patricia_trie.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/query_expansion.html +6 -6
- data/vendor/local/share/doc/groonga/en/html/tutorial/search.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/.buildinfo +1 -1
- data/vendor/local/share/doc/groonga/ja/html/_sources/contribution/development/release.txt +69 -52
- data/vendor/local/share/doc/groonga/ja/html/_sources/install/centos.txt +6 -6
- data/vendor/local/share/doc/groonga/ja/html/_sources/install/debian.txt +56 -5
- data/vendor/local/share/doc/groonga/ja/html/_sources/install/fedora.txt +4 -4
- data/vendor/local/share/doc/groonga/ja/html/_sources/install/mac_os_x.txt +3 -3
- data/vendor/local/share/doc/groonga/ja/html/_sources/install/others.txt +7 -7
- data/vendor/local/share/doc/groonga/ja/html/_sources/install/solaris.txt +3 -3
- data/vendor/local/share/doc/groonga/ja/html/_sources/install/ubuntu.txt +6 -5
- data/vendor/local/share/doc/groonga/ja/html/_sources/install/windows.txt +14 -14
- data/vendor/local/share/doc/groonga/ja/html/_sources/news.txt +93 -3
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/0.x.txt +2 -2
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/1.0.x.txt +9 -9
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/1.1.x.txt +1 -1
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/1.2.x.txt +10 -10
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/1.3.x.txt +1 -1
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/2.x.txt +13 -13
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/3.x.txt +13 -13
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/4.x.txt +9 -9
- data/vendor/local/share/doc/groonga/ja/html/_sources/news/senna.txt +13 -13
- data/vendor/local/share/doc/groonga/ja/html/_sources/reference/commands/dump.txt +135 -27
- data/vendor/local/share/doc/groonga/ja/html/_sources/reference/commands/request_cancel.txt +1 -1
- data/vendor/local/share/doc/groonga/ja/html/_sources/reference/executables/groonga.txt +148 -7
- data/vendor/local/share/doc/groonga/ja/html/_sources/reference/functions/vector_size.txt +76 -0
- data/vendor/local/share/doc/groonga/ja/html/_sources/reference/scorer.txt +2 -1
- data/vendor/local/share/doc/groonga/ja/html/_sources/server/gqtp.txt +38 -6
- data/vendor/local/share/doc/groonga/ja/html/_sources/spec/gqtp.txt +2 -1
- data/vendor/local/share/doc/groonga/ja/html/_sources/tutorial/index.txt +6 -4
- data/vendor/local/share/doc/groonga/ja/html/characteristic.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/client.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/community.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution.html +14 -13
- data/vendor/local/share/doc/groonga/ja/html/contribution/development.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/development/com.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/development/cooperation.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/development/query.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/development/release.html +58 -42
- data/vendor/local/share/doc/groonga/ja/html/contribution/development/repository.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/development/test.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/documentation.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/c-api.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/i18n.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/introduction.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/contribution/report.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/development.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/development/travis-ci.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/genindex.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/index.html +15 -9
- data/vendor/local/share/doc/groonga/ja/html/install.html +8 -7
- data/vendor/local/share/doc/groonga/ja/html/install/centos.html +9 -9
- data/vendor/local/share/doc/groonga/ja/html/install/debian.html +63 -11
- data/vendor/local/share/doc/groonga/ja/html/install/fedora.html +9 -9
- data/vendor/local/share/doc/groonga/ja/html/install/mac_os_x.html +9 -9
- data/vendor/local/share/doc/groonga/ja/html/install/others.html +21 -18
- data/vendor/local/share/doc/groonga/ja/html/install/solaris.html +9 -9
- data/vendor/local/share/doc/groonga/ja/html/install/ubuntu.html +10 -9
- data/vendor/local/share/doc/groonga/ja/html/install/windows.html +20 -20
- data/vendor/local/share/doc/groonga/ja/html/limitations.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/news.html +234 -106
- data/vendor/local/share/doc/groonga/ja/html/news/0.x.html +10 -10
- data/vendor/local/share/doc/groonga/ja/html/news/1.0.x.html +24 -24
- data/vendor/local/share/doc/groonga/ja/html/news/1.1.x.html +8 -8
- data/vendor/local/share/doc/groonga/ja/html/news/1.2.x.html +26 -26
- data/vendor/local/share/doc/groonga/ja/html/news/1.3.x.html +8 -8
- data/vendor/local/share/doc/groonga/ja/html/news/2.x.html +32 -32
- data/vendor/local/share/doc/groonga/ja/html/news/3.x.html +32 -32
- data/vendor/local/share/doc/groonga/ja/html/news/4.x.html +27 -27
- data/vendor/local/share/doc/groonga/ja/html/news/senna.html +32 -32
- data/vendor/local/share/doc/groonga/ja/html/objects.inv +0 -0
- data/vendor/local/share/doc/groonga/ja/html/reference.html +8 -7
- data/vendor/local/share/doc/groonga/ja/html/reference/api.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/global_configurations.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_cache.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_column.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_command_version.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_content_type.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_ctx.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_db.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_encoding.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_expr.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_geo.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_hook.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_ii.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_index_cursor.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_info.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_match_escalation.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_obj.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_proc.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_search.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_table.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_table_cursor.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_type.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_user_data.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/overview.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/api/plugin.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/cast.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/column.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/columns/index.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/columns/pseudo.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/columns/scalar.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/columns/vector.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/command.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/command/command_version.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/command/output_format.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/command/request_id.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/command/return_code.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/cache_limit.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/check.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/clearlock.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_create.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_list.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_remove.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_rename.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/define_selector.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/defrag.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/delete.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/dump.html +141 -34
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/load.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/lock_clear.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_level.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_put.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_reopen.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_count.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_range_filter.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/normalize.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/normalizer_list.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/plugin_register.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/plugin_unregister.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/quit.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/range_filter.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/register.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/request_cancel.html +25 -41
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/ruby_eval.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/ruby_load.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/select.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/shutdown.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/status.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/suggest.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_create.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_list.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_remove.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_tokenize.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/tokenize.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/tokenizer_list.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/commands/truncate.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/executables.html +7 -7
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/grndb.html +23 -29
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/grnslap.html +10 -10
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-benchmark.html +10 -10
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-httpd.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-server-http.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-create-dataset.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-httpd.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-learner.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga.html +146 -14
- data/vendor/local/share/doc/groonga/ja/html/reference/function.html +7 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/between.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/edit_distance.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_distance.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_in_circle.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_in_rectangle.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/highlight_full.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/highlight_html.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/html_untag.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/in_values.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/now.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/query.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/rand.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/snippet_html.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/sub_filter.html +11 -11
- data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_size.html +249 -0
- data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr/query_syntax.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr/script_syntax.html +7 -7
- data/vendor/local/share/doc/groonga/ja/html/reference/indexing.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/log.html +7 -7
- data/vendor/local/share/doc/groonga/ja/html/reference/normalizers.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/operations.html +11 -11
- data/vendor/local/share/doc/groonga/ja/html/reference/operations/geolocation_search.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/output.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/query_expanders.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/query_expanders/tsv.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/regular_expression.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/scorer.html +7 -7
- data/vendor/local/share/doc/groonga/ja/html/reference/scorers/scorer_tf_at_most.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/scorers/scorer_tf_idf.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/scoring_note.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/suggest.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/suggest/completion.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/suggest/correction.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/suggest/introduction.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/suggest/suggestion.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/tables.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/token_filters.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/tuning.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/reference/types.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/search.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/searchindex.js +1 -1
- data/vendor/local/share/doc/groonga/ja/html/server.html +11 -7
- data/vendor/local/share/doc/groonga/ja/html/server/gqtp.html +53 -8
- data/vendor/local/share/doc/groonga/ja/html/server/http.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/server/http/comparison.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/server/http/groonga-httpd.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/server/http/groonga.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/server/memcached.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/server/package.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/spec.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/spec/gqtp.html +10 -7
- data/vendor/local/share/doc/groonga/ja/html/spec/search.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/troubleshooting.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/troubleshooting/different_results_with_the_same_keyword.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/troubleshooting/mmap_cannot_allocate_memory.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/data.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/drilldown.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/index.html +15 -11
- data/vendor/local/share/doc/groonga/ja/html/tutorial/introduction.html +7 -7
- data/vendor/local/share/doc/groonga/ja/html/tutorial/lexicon.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/match_columns.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/micro_blog.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/network.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/patricia_trie.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/query_expansion.html +6 -6
- data/vendor/local/share/doc/groonga/ja/html/tutorial/search.html +6 -6
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/groonga-admin.css +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-icons_217bc0_256x240.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-icons_2e83ff_256x240.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-icons_469bdd_256x240.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-icons_6da8d5_256x240.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/images/ui-icons_f9bd01_256x240.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/css/redmond/jquery-ui-1.8.18.custom.css +0 -0
- data/vendor/local/share/groonga/html/admin.old/favicon.ico +0 -0
- data/vendor/local/share/groonga/html/admin.old/favicon.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/favicon.svg +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/images/groonga.png +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/images/groonga.svg +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/images/loading.gif +0 -0
- data/vendor/local/share/groonga/html/admin.old/index.html +297 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/index.ja.html +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/js/groonga-admin.ja.js +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/js/groonga-admin.js +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/js/jquery-1.7.2.js +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/js/jquery-ui-1.8.18.custom.js +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/js/jquery.flot-0.7.js +0 -0
- data/vendor/local/share/groonga/html/{admin → admin.old}/js/jquery.flot.license.txt +0 -0
- data/vendor/local/share/groonga/html/admin/.htaccess +543 -0
- data/vendor/local/share/groonga/html/admin/404.html +133 -0
- data/vendor/local/share/groonga/html/admin/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
- data/vendor/local/share/groonga/html/admin/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +229 -0
- data/vendor/local/share/groonga/html/admin/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/local/share/groonga/html/admin/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- data/vendor/local/share/groonga/html/admin/images/yeoman.d2754b85.png +0 -0
- data/vendor/local/share/groonga/html/admin/index.html +9 -297
- data/vendor/local/share/groonga/html/admin/robots.txt +3 -0
- data/vendor/local/share/groonga/html/admin/scripts/oldieshim.a466b7b1.js +1 -0
- data/vendor/local/share/groonga/html/admin/scripts/scripts.87083bfd.js +1 -0
- data/vendor/local/share/groonga/html/admin/scripts/vendor.fa48c0ac.js +13 -0
- data/vendor/local/share/groonga/html/admin/styles/main.0390285b.css +1 -0
- data/vendor/local/share/groonga/html/admin/styles/vendor.f4ae649a.css +10 -0
- data/vendor/local/share/groonga/html/admin/views/columns/new.html +1 -0
- data/vendor/local/share/groonga/html/admin/views/columns/show.html +1 -0
- data/vendor/local/share/groonga/html/admin/views/tables/index.html +1 -0
- data/vendor/local/share/groonga/html/admin/views/tables/new.html +29 -0
- data/vendor/local/share/groonga/html/admin/views/tables/search.html +1 -0
- data/vendor/local/share/groonga/html/admin/views/tables/show.html +1 -0
- data/vendor/local/share/groonga/html/admin/views/top.html +1 -0
- data/vendor/local/share/license/groonga-admin/LICENSE +502 -0
- data/vendor/local/share/license/groonga-admin/README.md +79 -0
- data/vendor/local/share/license/msgpack/AUTHORS +0 -1
- data/vendor/local/share/man/ja/man1/groonga.1 +826 -147
- data/vendor/local/share/man/man1/groonga.1 +812 -99
- metadata +138 -55
- data/doc/text/install.textile +0 -145
- data/doc/text/tutorial.textile +0 -510
- data/vendor/local/bin/libmsgpack-3.dll +0 -0
- data/vendor/local/include/msgpack/type/define.hpp +0 -3465
- data/vendor/local/include/msgpack/type/deque.hpp +0 -77
- data/vendor/local/include/msgpack/type/fixint.hpp +0 -172
- data/vendor/local/include/msgpack/type/float.hpp +0 -102
- data/vendor/local/include/msgpack/type/int.hpp +0 -276
- data/vendor/local/include/msgpack/type/list.hpp +0 -77
- data/vendor/local/include/msgpack/type/map.hpp +0 -205
- data/vendor/local/include/msgpack/type/raw.hpp +0 -94
- data/vendor/local/include/msgpack/type/set.hpp +0 -122
- data/vendor/local/include/msgpack/type/string.hpp +0 -62
- data/vendor/local/include/msgpack/type/tr1/unordered_map.hpp +0 -150
- data/vendor/local/include/msgpack/type/tr1/unordered_set.hpp +0 -142
- data/vendor/local/include/msgpack/type/tuple.hpp +0 -13691
- data/vendor/local/include/msgpack/type/vector.hpp +0 -81
- data/vendor/local/share/doc/groonga/en/html/_static/jp.png +0 -0
- data/vendor/local/share/doc/groonga/en/html/_static/us.png +0 -0
- data/vendor/local/share/doc/groonga/ja/html/_static/jp.png +0 -0
- data/vendor/local/share/doc/groonga/ja/html/_static/us.png +0 -0
@@ -1,17 +1,35 @@
|
|
1
|
-
#include "
|
2
|
-
#include "
|
3
|
-
#include "
|
4
|
-
#include "
|
5
|
-
#include "
|
6
|
-
#include "
|
7
|
-
#include "
|
8
|
-
#include "
|
9
|
-
#include "
|
10
|
-
#include "
|
11
|
-
#include "
|
12
|
-
#include "
|
13
|
-
#include "
|
14
|
-
#include "
|
15
|
-
#include "
|
16
|
-
#include "
|
17
|
-
#include "
|
1
|
+
#include "cpp_config.hpp"
|
2
|
+
#include "adaptor/bool.hpp"
|
3
|
+
#include "adaptor/char_ptr.hpp"
|
4
|
+
#include "adaptor/deque.hpp"
|
5
|
+
#include "adaptor/fixint.hpp"
|
6
|
+
#include "adaptor/float.hpp"
|
7
|
+
#include "adaptor/int.hpp"
|
8
|
+
#include "adaptor/list.hpp"
|
9
|
+
#include "adaptor/map.hpp"
|
10
|
+
#include "adaptor/nil.hpp"
|
11
|
+
#include "adaptor/pair.hpp"
|
12
|
+
#include "adaptor/raw.hpp"
|
13
|
+
#include "adaptor/set.hpp"
|
14
|
+
#include "adaptor/string.hpp"
|
15
|
+
#include "adaptor/vector.hpp"
|
16
|
+
#include "adaptor/vector_bool.hpp"
|
17
|
+
#include "adaptor/vector_char.hpp"
|
18
|
+
#include "adaptor/msgpack_tuple.hpp"
|
19
|
+
#include "adaptor/define.hpp"
|
20
|
+
|
21
|
+
#if defined(MSGPACK_USE_CPP03)
|
22
|
+
|
23
|
+
#include "adaptor/tr1/unordered_map.hpp"
|
24
|
+
#include "adaptor/tr1/unordered_set.hpp"
|
25
|
+
|
26
|
+
#else // defined(MSGPACK_USE_CPP03)
|
27
|
+
|
28
|
+
#include "adaptor/cpp11/array.hpp"
|
29
|
+
#include "adaptor/cpp11/array_char.hpp"
|
30
|
+
#include "adaptor/cpp11/forward_list.hpp"
|
31
|
+
#include "adaptor/cpp11/tuple.hpp"
|
32
|
+
#include "adaptor/cpp11/unordered_map.hpp"
|
33
|
+
#include "adaptor/cpp11/unordered_set.hpp"
|
34
|
+
|
35
|
+
#endif // defined(MSGPACK_USE_CPP03)
|
@@ -15,8 +15,8 @@
|
|
15
15
|
* See the License for the specific language governing permissions and
|
16
16
|
* limitations under the License.
|
17
17
|
*/
|
18
|
-
#ifndef
|
19
|
-
#define
|
18
|
+
#ifndef MSGPACK_UNPACKER_H
|
19
|
+
#define MSGPACK_UNPACKER_H
|
20
20
|
|
21
21
|
#include "zone.h"
|
22
22
|
#include "object.h"
|
@@ -34,12 +34,23 @@ extern "C" {
|
|
34
34
|
*/
|
35
35
|
|
36
36
|
typedef struct msgpack_unpacked {
|
37
|
-
|
38
|
-
|
37
|
+
msgpack_zone* zone;
|
38
|
+
msgpack_object data;
|
39
39
|
} msgpack_unpacked;
|
40
40
|
|
41
|
-
|
42
|
-
|
41
|
+
typedef enum {
|
42
|
+
MSGPACK_UNPACK_SUCCESS = 2,
|
43
|
+
MSGPACK_UNPACK_EXTRA_BYTES = 1,
|
44
|
+
MSGPACK_UNPACK_CONTINUE = 0,
|
45
|
+
MSGPACK_UNPACK_PARSE_ERROR = -1,
|
46
|
+
MSGPACK_UNPACK_NOMEM_ERROR = -2
|
47
|
+
} msgpack_unpack_return;
|
48
|
+
|
49
|
+
|
50
|
+
MSGPACK_DLLEXPORT
|
51
|
+
msgpack_unpack_return
|
52
|
+
msgpack_unpack_next(msgpack_unpacked* result,
|
53
|
+
const char* data, size_t len, size_t* off);
|
43
54
|
|
44
55
|
/** @} */
|
45
56
|
|
@@ -51,14 +62,14 @@ bool msgpack_unpack_next(msgpack_unpacked* result,
|
|
51
62
|
*/
|
52
63
|
|
53
64
|
typedef struct msgpack_unpacker {
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
65
|
+
char* buffer;
|
66
|
+
size_t used;
|
67
|
+
size_t free;
|
68
|
+
size_t off;
|
69
|
+
size_t parsed;
|
70
|
+
msgpack_zone* z;
|
71
|
+
size_t initial_buffer_size;
|
72
|
+
void* ctx;
|
62
73
|
} msgpack_unpacker;
|
63
74
|
|
64
75
|
|
@@ -70,11 +81,13 @@ typedef struct msgpack_unpacker {
|
|
70
81
|
* Initializes a streaming deserializer.
|
71
82
|
* The initialized deserializer must be destroyed by msgpack_unpacker_destroy(msgpack_unpacker*).
|
72
83
|
*/
|
84
|
+
MSGPACK_DLLEXPORT
|
73
85
|
bool msgpack_unpacker_init(msgpack_unpacker* mpac, size_t initial_buffer_size);
|
74
86
|
|
75
87
|
/**
|
76
88
|
* Destroys a streaming deserializer initialized by msgpack_unpacker_init(msgpack_unpacker*, size_t).
|
77
89
|
*/
|
90
|
+
MSGPACK_DLLEXPORT
|
78
91
|
void msgpack_unpacker_destroy(msgpack_unpacker* mpac);
|
79
92
|
|
80
93
|
|
@@ -82,11 +95,13 @@ void msgpack_unpacker_destroy(msgpack_unpacker* mpac);
|
|
82
95
|
* Creates a streaming deserializer.
|
83
96
|
* The created deserializer must be destroyed by msgpack_unpacker_free(msgpack_unpacker*).
|
84
97
|
*/
|
98
|
+
MSGPACK_DLLEXPORT
|
85
99
|
msgpack_unpacker* msgpack_unpacker_new(size_t initial_buffer_size);
|
86
100
|
|
87
101
|
/**
|
88
102
|
* Frees a streaming deserializer created by msgpack_unpacker_new(size_t).
|
89
103
|
*/
|
104
|
+
MSGPACK_DLLEXPORT
|
90
105
|
void msgpack_unpacker_free(msgpack_unpacker* mpac);
|
91
106
|
|
92
107
|
|
@@ -136,7 +151,8 @@ static inline void msgpack_unpacker_buffer_consumed(msgpack_unpacker* mpac, si
|
|
136
151
|
* Returns true if it successes. Otherwise false is returned.
|
137
152
|
* @param pac pointer to an initialized msgpack_unpacked object.
|
138
153
|
*/
|
139
|
-
|
154
|
+
MSGPACK_DLLEXPORT
|
155
|
+
msgpack_unpack_return msgpack_unpacker_next(msgpack_unpacker* mpac, msgpack_unpacked* pac);
|
140
156
|
|
141
157
|
/**
|
142
158
|
* Initializes a msgpack_unpacked object.
|
@@ -158,14 +174,19 @@ static inline void msgpack_unpacked_destroy(msgpack_unpacked* result);
|
|
158
174
|
static inline msgpack_zone* msgpack_unpacked_release_zone(msgpack_unpacked* result);
|
159
175
|
|
160
176
|
|
177
|
+
MSGPACK_DLLEXPORT
|
161
178
|
int msgpack_unpacker_execute(msgpack_unpacker* mpac);
|
162
179
|
|
180
|
+
MSGPACK_DLLEXPORT
|
163
181
|
msgpack_object msgpack_unpacker_data(msgpack_unpacker* mpac);
|
164
182
|
|
183
|
+
MSGPACK_DLLEXPORT
|
165
184
|
msgpack_zone* msgpack_unpacker_release_zone(msgpack_unpacker* mpac);
|
166
185
|
|
186
|
+
MSGPACK_DLLEXPORT
|
167
187
|
void msgpack_unpacker_reset_zone(msgpack_unpacker* mpac);
|
168
188
|
|
189
|
+
MSGPACK_DLLEXPORT
|
169
190
|
void msgpack_unpacker_reset(msgpack_unpacker* mpac);
|
170
191
|
|
171
192
|
static inline size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac);
|
@@ -175,80 +196,77 @@ static inline size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac)
|
|
175
196
|
|
176
197
|
|
177
198
|
// obsolete
|
178
|
-
|
179
|
-
MSGPACK_UNPACK_SUCCESS = 2,
|
180
|
-
MSGPACK_UNPACK_EXTRA_BYTES = 1,
|
181
|
-
MSGPACK_UNPACK_CONTINUE = 0,
|
182
|
-
MSGPACK_UNPACK_PARSE_ERROR = -1,
|
183
|
-
} msgpack_unpack_return;
|
184
|
-
|
185
|
-
// obsolete
|
199
|
+
MSGPACK_DLLEXPORT
|
186
200
|
msgpack_unpack_return
|
187
201
|
msgpack_unpack(const char* data, size_t len, size_t* off,
|
188
|
-
|
202
|
+
msgpack_zone* result_zone, msgpack_object* result);
|
203
|
+
|
204
|
+
|
189
205
|
|
190
206
|
|
191
207
|
static inline size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac);
|
192
208
|
|
209
|
+
MSGPACK_DLLEXPORT
|
193
210
|
bool msgpack_unpacker_flush_zone(msgpack_unpacker* mpac);
|
194
211
|
|
212
|
+
MSGPACK_DLLEXPORT
|
195
213
|
bool msgpack_unpacker_expand_buffer(msgpack_unpacker* mpac, size_t size);
|
196
214
|
|
197
215
|
static inline bool msgpack_unpacker_reserve_buffer(msgpack_unpacker* mpac, size_t size)
|
198
216
|
{
|
199
|
-
|
200
|
-
|
217
|
+
if(mpac->free >= size) { return true; }
|
218
|
+
return msgpack_unpacker_expand_buffer(mpac, size);
|
201
219
|
}
|
202
220
|
|
203
221
|
static inline char* msgpack_unpacker_buffer(msgpack_unpacker* mpac)
|
204
222
|
{
|
205
|
-
|
223
|
+
return mpac->buffer + mpac->used;
|
206
224
|
}
|
207
225
|
|
208
226
|
static inline size_t msgpack_unpacker_buffer_capacity(const msgpack_unpacker* mpac)
|
209
227
|
{
|
210
|
-
|
228
|
+
return mpac->free;
|
211
229
|
}
|
212
230
|
|
213
231
|
static inline void msgpack_unpacker_buffer_consumed(msgpack_unpacker* mpac, size_t size)
|
214
232
|
{
|
215
|
-
|
216
|
-
|
233
|
+
mpac->used += size;
|
234
|
+
mpac->free -= size;
|
217
235
|
}
|
218
236
|
|
219
237
|
static inline size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac)
|
220
238
|
{
|
221
|
-
|
239
|
+
return mpac->parsed - mpac->off + mpac->used;
|
222
240
|
}
|
223
241
|
|
224
242
|
static inline size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac)
|
225
243
|
{
|
226
|
-
|
244
|
+
return mpac->parsed;
|
227
245
|
}
|
228
246
|
|
229
247
|
|
230
248
|
static inline void msgpack_unpacked_init(msgpack_unpacked* result)
|
231
249
|
{
|
232
|
-
|
250
|
+
memset(result, 0, sizeof(msgpack_unpacked));
|
233
251
|
}
|
234
252
|
|
235
253
|
static inline void msgpack_unpacked_destroy(msgpack_unpacked* result)
|
236
254
|
{
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
255
|
+
if(result->zone != NULL) {
|
256
|
+
msgpack_zone_free(result->zone);
|
257
|
+
result->zone = NULL;
|
258
|
+
memset(&result->data, 0, sizeof(msgpack_object));
|
259
|
+
}
|
242
260
|
}
|
243
261
|
|
244
262
|
static inline msgpack_zone* msgpack_unpacked_release_zone(msgpack_unpacked* result)
|
245
263
|
{
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
264
|
+
if(result->zone != NULL) {
|
265
|
+
msgpack_zone* z = result->zone;
|
266
|
+
result->zone = NULL;
|
267
|
+
return z;
|
268
|
+
}
|
269
|
+
return NULL;
|
252
270
|
}
|
253
271
|
|
254
272
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
//
|
2
2
|
// MessagePack for C++ deserializing routine
|
3
3
|
//
|
4
|
-
// Copyright (C) 2008-
|
4
|
+
// Copyright (C) 2008-2015 FURUHASHI Sadayuki and KONDO Takatoshi
|
5
5
|
//
|
6
6
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
// you may not use this file except in compliance with the License.
|
@@ -15,360 +15,1721 @@
|
|
15
15
|
// See the License for the specific language governing permissions and
|
16
16
|
// limitations under the License.
|
17
17
|
//
|
18
|
-
#ifndef
|
19
|
-
#define
|
18
|
+
#ifndef MSGPACK_UNPACK_HPP
|
19
|
+
#define MSGPACK_UNPACK_HPP
|
20
20
|
|
21
|
-
#include "
|
21
|
+
#include "msgpack/versioning.hpp"
|
22
22
|
#include "object.hpp"
|
23
23
|
#include "zone.hpp"
|
24
|
+
#include "unpack_define.h"
|
25
|
+
#include "cpp_config.hpp"
|
26
|
+
#include "sysdep.h"
|
27
|
+
|
24
28
|
#include <memory>
|
25
29
|
#include <stdexcept>
|
26
30
|
|
31
|
+
#if !defined(MSGPACK_USE_CPP03)
|
32
|
+
#include <atomic>
|
33
|
+
#endif
|
34
|
+
|
35
|
+
|
36
|
+
#if defined(_MSC_VER)
|
37
|
+
// avoiding confliction std::max, std::min, and macro in windows.h
|
38
|
+
#ifndef NOMINMAX
|
39
|
+
#define NOMINMAX
|
40
|
+
#endif
|
41
|
+
#endif // defined(_MSC_VER)
|
42
|
+
|
43
|
+
#ifdef _msgpack_atomic_counter_header
|
44
|
+
#include _msgpack_atomic_counter_header
|
45
|
+
#endif
|
46
|
+
|
47
|
+
|
48
|
+
const size_t COUNTER_SIZE = sizeof(_msgpack_atomic_counter_t);
|
49
|
+
|
50
|
+
#ifndef MSGPACK_UNPACKER_INIT_BUFFER_SIZE
|
51
|
+
#define MSGPACK_UNPACKER_INIT_BUFFER_SIZE (64*1024)
|
52
|
+
#endif
|
53
|
+
|
54
|
+
#ifndef MSGPACK_UNPACKER_RESERVE_SIZE
|
55
|
+
#define MSGPACK_UNPACKER_RESERVE_SIZE (32*1024)
|
56
|
+
#endif
|
57
|
+
|
58
|
+
|
27
59
|
// backward compatibility
|
28
60
|
#ifndef MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE
|
29
61
|
#define MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE MSGPACK_UNPACKER_INIT_BUFFER_SIZE
|
30
62
|
#endif
|
31
63
|
|
64
|
+
|
32
65
|
namespace msgpack {
|
33
66
|
|
67
|
+
MSGPACK_API_VERSION_NAMESPACE(v1) {
|
68
|
+
|
69
|
+
typedef bool (*unpack_reference_func)(msgpack::type::object_type, std::size_t, void*);
|
34
70
|
|
35
71
|
struct unpack_error : public std::runtime_error {
|
36
|
-
|
37
|
-
|
72
|
+
explicit unpack_error(const std::string& msg)
|
73
|
+
:std::runtime_error(msg) {}
|
74
|
+
#if !defined(MSGPACK_USE_CPP03)
|
75
|
+
explicit unpack_error(const char* msg):
|
76
|
+
std::runtime_error(msg) {}
|
77
|
+
#endif // !defined(MSGPACK_USE_CPP03)
|
78
|
+
};
|
79
|
+
|
80
|
+
struct parse_error : public unpack_error {
|
81
|
+
explicit parse_error(const std::string& msg)
|
82
|
+
:unpack_error(msg) {}
|
83
|
+
#if !defined(MSGPACK_USE_CPP03)
|
84
|
+
explicit parse_error(const char* msg)
|
85
|
+
:unpack_error(msg) {}
|
86
|
+
#endif // !defined(MSGPACK_USE_CPP03)
|
87
|
+
};
|
88
|
+
|
89
|
+
struct insufficient_bytes : public unpack_error {
|
90
|
+
explicit insufficient_bytes(const std::string& msg)
|
91
|
+
:unpack_error(msg) {}
|
92
|
+
#if !defined(MSGPACK_USE_CPP03)
|
93
|
+
explicit insufficient_bytes(const char* msg)
|
94
|
+
:unpack_error(msg) {}
|
95
|
+
#endif // !defined(MSGPACK_USE_CPP03)
|
96
|
+
};
|
97
|
+
|
98
|
+
struct size_overflow : public unpack_error {
|
99
|
+
explicit size_overflow(const std::string& msg)
|
100
|
+
:unpack_error(msg) {}
|
101
|
+
#if !defined(MSGPACK_USE_CPP03)
|
102
|
+
explicit size_overflow(const char* msg)
|
103
|
+
:unpack_error(msg) {}
|
104
|
+
#endif
|
105
|
+
};
|
106
|
+
|
107
|
+
struct array_size_overflow : public size_overflow {
|
108
|
+
array_size_overflow(const std::string& msg)
|
109
|
+
:size_overflow(msg) {}
|
110
|
+
#if !defined(MSGPACK_USE_CPP03)
|
111
|
+
array_size_overflow(const char* msg)
|
112
|
+
:size_overflow(msg) {}
|
113
|
+
#endif
|
114
|
+
};
|
115
|
+
|
116
|
+
struct map_size_overflow : public size_overflow {
|
117
|
+
map_size_overflow(const std::string& msg)
|
118
|
+
:size_overflow(msg) {}
|
119
|
+
#if !defined(MSGPACK_USE_CPP03)
|
120
|
+
map_size_overflow(const char* msg)
|
121
|
+
:size_overflow(msg) {}
|
122
|
+
#endif
|
123
|
+
};
|
124
|
+
|
125
|
+
struct str_size_overflow : public size_overflow {
|
126
|
+
str_size_overflow(const std::string& msg)
|
127
|
+
:size_overflow(msg) {}
|
128
|
+
#if !defined(MSGPACK_USE_CPP03)
|
129
|
+
str_size_overflow(const char* msg)
|
130
|
+
:size_overflow(msg) {}
|
131
|
+
#endif
|
132
|
+
};
|
133
|
+
|
134
|
+
struct bin_size_overflow : public size_overflow {
|
135
|
+
bin_size_overflow(const std::string& msg)
|
136
|
+
:size_overflow(msg) {}
|
137
|
+
#if !defined(MSGPACK_USE_CPP03)
|
138
|
+
bin_size_overflow(const char* msg)
|
139
|
+
:size_overflow(msg) {}
|
140
|
+
#endif
|
141
|
+
};
|
142
|
+
|
143
|
+
struct ext_size_overflow : public size_overflow {
|
144
|
+
ext_size_overflow(const std::string& msg)
|
145
|
+
:size_overflow(msg) {}
|
146
|
+
#if !defined(MSGPACK_USE_CPP03)
|
147
|
+
ext_size_overflow(const char* msg)
|
148
|
+
:size_overflow(msg) {}
|
149
|
+
#endif
|
150
|
+
};
|
151
|
+
|
152
|
+
struct depth_size_overflow : public size_overflow {
|
153
|
+
depth_size_overflow(const std::string& msg)
|
154
|
+
:size_overflow(msg) {}
|
155
|
+
#if !defined(MSGPACK_USE_CPP03)
|
156
|
+
depth_size_overflow(const char* msg)
|
157
|
+
:size_overflow(msg) {}
|
158
|
+
#endif
|
159
|
+
};
|
160
|
+
|
161
|
+
class unpack_limit {
|
162
|
+
public:
|
163
|
+
unpack_limit(
|
164
|
+
std::size_t array = 0xffffffff,
|
165
|
+
std::size_t map = 0xffffffff,
|
166
|
+
std::size_t str = 0xffffffff,
|
167
|
+
std::size_t bin = 0xffffffff,
|
168
|
+
std::size_t ext = 0xffffffff,
|
169
|
+
std::size_t depth = 0xffffffff)
|
170
|
+
:array_(array),
|
171
|
+
map_(map),
|
172
|
+
str_(str),
|
173
|
+
bin_(bin),
|
174
|
+
ext_(ext),
|
175
|
+
depth_(depth) {}
|
176
|
+
std::size_t array() const { return array_; }
|
177
|
+
std::size_t map() const { return map_; }
|
178
|
+
std::size_t str() const { return str_; }
|
179
|
+
std::size_t bin() const { return bin_; }
|
180
|
+
std::size_t ext() const { return ext_; }
|
181
|
+
std::size_t depth() const { return depth_; }
|
182
|
+
|
183
|
+
private:
|
184
|
+
std::size_t array_;
|
185
|
+
std::size_t map_;
|
186
|
+
std::size_t str_;
|
187
|
+
std::size_t bin_;
|
188
|
+
std::size_t ext_;
|
189
|
+
std::size_t depth_;
|
190
|
+
};
|
191
|
+
|
192
|
+
namespace detail {
|
193
|
+
|
194
|
+
class unpack_user {
|
195
|
+
public:
|
196
|
+
unpack_user(unpack_reference_func f = nullptr,
|
197
|
+
void* user_data = nullptr,
|
198
|
+
unpack_limit const& limit = unpack_limit())
|
199
|
+
:m_func(f), m_user_data(user_data), m_limit(limit) {}
|
200
|
+
msgpack::zone const& zone() const { return *m_zone; }
|
201
|
+
msgpack::zone& zone() { return *m_zone; }
|
202
|
+
void set_zone(msgpack::zone& zone) { m_zone = &zone; }
|
203
|
+
bool referenced() const { return m_referenced; }
|
204
|
+
void set_referenced(bool referenced) { m_referenced = referenced; }
|
205
|
+
unpack_reference_func reference_func() const { return m_func; }
|
206
|
+
void* user_data() const { return m_user_data; }
|
207
|
+
unpack_limit const& limit() const { return m_limit; }
|
208
|
+
unpack_limit& limit() { return m_limit; }
|
209
|
+
|
210
|
+
private:
|
211
|
+
msgpack::zone* m_zone;
|
212
|
+
bool m_referenced;
|
213
|
+
unpack_reference_func m_func;
|
214
|
+
void* m_user_data;
|
215
|
+
unpack_limit m_limit;
|
216
|
+
};
|
217
|
+
|
218
|
+
inline void unpack_uint8(uint8_t d, msgpack::object& o)
|
219
|
+
{ o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
|
220
|
+
|
221
|
+
inline void unpack_uint16(uint16_t d, msgpack::object& o)
|
222
|
+
{ o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
|
223
|
+
|
224
|
+
inline void unpack_uint32(uint32_t d, msgpack::object& o)
|
225
|
+
{ o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
|
226
|
+
|
227
|
+
inline void unpack_uint64(uint64_t d, msgpack::object& o)
|
228
|
+
{ o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
|
229
|
+
|
230
|
+
inline void unpack_int8(int8_t d, msgpack::object& o)
|
231
|
+
{ if(d >= 0) { o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
|
232
|
+
else { o.type = msgpack::type::NEGATIVE_INTEGER; o.via.i64 = d; } }
|
233
|
+
|
234
|
+
inline void unpack_int16(int16_t d, msgpack::object& o)
|
235
|
+
{ if(d >= 0) { o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
|
236
|
+
else { o.type = msgpack::type::NEGATIVE_INTEGER; o.via.i64 = d; } }
|
237
|
+
|
238
|
+
inline void unpack_int32(int32_t d, msgpack::object& o)
|
239
|
+
{ if(d >= 0) { o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
|
240
|
+
else { o.type = msgpack::type::NEGATIVE_INTEGER; o.via.i64 = d; } }
|
241
|
+
|
242
|
+
inline void unpack_int64(int64_t d, msgpack::object& o)
|
243
|
+
{ if(d >= 0) { o.type = msgpack::type::POSITIVE_INTEGER; o.via.u64 = d; }
|
244
|
+
else { o.type = msgpack::type::NEGATIVE_INTEGER; o.via.i64 = d; } }
|
245
|
+
|
246
|
+
inline void unpack_float(float d, msgpack::object& o)
|
247
|
+
{ o.type = msgpack::type::FLOAT; o.via.f64 = d; }
|
248
|
+
|
249
|
+
inline void unpack_double(double d, msgpack::object& o)
|
250
|
+
{ o.type = msgpack::type::FLOAT; o.via.f64 = d; }
|
251
|
+
|
252
|
+
inline void unpack_nil(msgpack::object& o)
|
253
|
+
{ o.type = msgpack::type::NIL; }
|
254
|
+
|
255
|
+
inline void unpack_true(msgpack::object& o)
|
256
|
+
{ o.type = msgpack::type::BOOLEAN; o.via.boolean = true; }
|
257
|
+
|
258
|
+
inline void unpack_false(msgpack::object& o)
|
259
|
+
{ o.type = msgpack::type::BOOLEAN; o.via.boolean = false; }
|
260
|
+
|
261
|
+
struct unpack_array {
|
262
|
+
void operator()(unpack_user& u, uint32_t n, msgpack::object& o) const {
|
263
|
+
if (n > u.limit().array()) throw msgpack::array_size_overflow("array size overflow");
|
264
|
+
o.type = msgpack::type::ARRAY;
|
265
|
+
o.via.array.size = 0;
|
266
|
+
o.via.array.ptr = static_cast<msgpack::object*>(u.zone().allocate_align(n*sizeof(msgpack::object)));
|
267
|
+
}
|
268
|
+
};
|
269
|
+
|
270
|
+
inline void unpack_array_item(msgpack::object& c, msgpack::object const& o)
|
271
|
+
{
|
272
|
+
#if defined(__GNUC__) && !defined(__clang__)
|
273
|
+
std::memcpy(&c.via.array.ptr[c.via.array.size++], &o, sizeof(msgpack::object));
|
274
|
+
#else /* __GNUC__ && !__clang__ */
|
275
|
+
c.via.array.ptr[c.via.array.size++] = o;
|
276
|
+
#endif /* __GNUC__ && !__clang__ */
|
277
|
+
}
|
278
|
+
|
279
|
+
struct unpack_map {
|
280
|
+
void operator()(unpack_user& u, uint32_t n, msgpack::object& o) const {
|
281
|
+
if (n > u.limit().map()) throw msgpack::map_size_overflow("map size overflow");
|
282
|
+
o.type = msgpack::type::MAP;
|
283
|
+
o.via.map.size = 0;
|
284
|
+
o.via.map.ptr = static_cast<msgpack::object_kv*>(u.zone().allocate_align(n*sizeof(msgpack::object_kv)));
|
285
|
+
}
|
286
|
+
};
|
287
|
+
|
288
|
+
inline void unpack_map_item(msgpack::object& c, msgpack::object const& k, msgpack::object const& v)
|
289
|
+
{
|
290
|
+
#if defined(__GNUC__) && !defined(__clang__)
|
291
|
+
std::memcpy(&c.via.map.ptr[c.via.map.size].key, &k, sizeof(msgpack::object));
|
292
|
+
std::memcpy(&c.via.map.ptr[c.via.map.size].val, &v, sizeof(msgpack::object));
|
293
|
+
#else /* __GNUC__ && !__clang__ */
|
294
|
+
c.via.map.ptr[c.via.map.size].key = k;
|
295
|
+
c.via.map.ptr[c.via.map.size].val = v;
|
296
|
+
#endif /* __GNUC__ && !__clang__ */
|
297
|
+
++c.via.map.size;
|
298
|
+
}
|
299
|
+
|
300
|
+
inline void unpack_str(unpack_user& u, const char* p, uint32_t l, msgpack::object& o)
|
301
|
+
{
|
302
|
+
o.type = msgpack::type::STR;
|
303
|
+
if (u.reference_func() && u.reference_func()(o.type, l, u.user_data())) {
|
304
|
+
o.via.str.ptr = p;
|
305
|
+
u.set_referenced(true);
|
306
|
+
}
|
307
|
+
else {
|
308
|
+
if (l > u.limit().str()) throw msgpack::str_size_overflow("str size overflow");
|
309
|
+
char* tmp = static_cast<char*>(u.zone().allocate_align(l));
|
310
|
+
std::memcpy(tmp, p, l);
|
311
|
+
o.via.str.ptr = tmp;
|
312
|
+
}
|
313
|
+
o.via.str.size = l;
|
314
|
+
}
|
315
|
+
|
316
|
+
inline void unpack_bin(unpack_user& u, const char* p, uint32_t l, msgpack::object& o)
|
317
|
+
{
|
318
|
+
o.type = msgpack::type::BIN;
|
319
|
+
if (u.reference_func() && u.reference_func()(o.type, l, u.user_data())) {
|
320
|
+
o.via.bin.ptr = p;
|
321
|
+
u.set_referenced(true);
|
322
|
+
}
|
323
|
+
else {
|
324
|
+
if (l > u.limit().bin()) throw msgpack::bin_size_overflow("bin size overflow");
|
325
|
+
char* tmp = static_cast<char*>(u.zone().allocate_align(l));
|
326
|
+
std::memcpy(tmp, p, l);
|
327
|
+
o.via.bin.ptr = tmp;
|
328
|
+
}
|
329
|
+
o.via.bin.size = l;
|
330
|
+
}
|
331
|
+
|
332
|
+
inline void unpack_ext(unpack_user& u, const char* p, std::size_t l, msgpack::object& o)
|
333
|
+
{
|
334
|
+
o.type = msgpack::type::EXT;
|
335
|
+
if (u.reference_func() && u.reference_func()(o.type, l, u.user_data())) {
|
336
|
+
o.via.ext.ptr = p;
|
337
|
+
u.set_referenced(true);
|
338
|
+
}
|
339
|
+
else {
|
340
|
+
if (l > u.limit().ext()) throw msgpack::ext_size_overflow("ext size overflow");
|
341
|
+
char* tmp = static_cast<char*>(u.zone().allocate_align(l));
|
342
|
+
std::memcpy(tmp, p, l);
|
343
|
+
o.via.ext.ptr = tmp;
|
344
|
+
}
|
345
|
+
o.via.ext.size = static_cast<uint32_t>(l - 1);
|
346
|
+
}
|
347
|
+
|
348
|
+
|
349
|
+
class unpack_stack {
|
350
|
+
public:
|
351
|
+
msgpack::object const& obj() const { return m_obj; }
|
352
|
+
msgpack::object& obj() { return m_obj; }
|
353
|
+
void set_obj(msgpack::object const& obj) { m_obj = obj; }
|
354
|
+
std::size_t count() const { return m_count; }
|
355
|
+
void set_count(std::size_t count) { m_count = count; }
|
356
|
+
std::size_t decr_count() { return --m_count; }
|
357
|
+
uint32_t container_type() const { return m_container_type; }
|
358
|
+
void set_container_type(uint32_t container_type) { m_container_type = container_type; }
|
359
|
+
msgpack::object const& map_key() const { return m_map_key; }
|
360
|
+
void set_map_key(msgpack::object const& map_key) { m_map_key = map_key; }
|
361
|
+
private:
|
362
|
+
msgpack::object m_obj;
|
363
|
+
std::size_t m_count;
|
364
|
+
uint32_t m_container_type;
|
365
|
+
msgpack::object m_map_key;
|
366
|
+
};
|
367
|
+
|
368
|
+
inline void init_count(void* buffer)
|
369
|
+
{
|
370
|
+
#if defined(MSGPACK_USE_CPP03)
|
371
|
+
*reinterpret_cast<volatile _msgpack_atomic_counter_t*>(buffer) = 1;
|
372
|
+
#else // defined(MSGPACK_USE_CPP03)
|
373
|
+
new (buffer) std::atomic<unsigned int>(1);
|
374
|
+
#endif // defined(MSGPACK_USE_CPP03)
|
375
|
+
}
|
376
|
+
|
377
|
+
inline void decr_count(void* buffer)
|
378
|
+
{
|
379
|
+
#if defined(MSGPACK_USE_CPP03)
|
380
|
+
if(_msgpack_sync_decr_and_fetch(reinterpret_cast<volatile _msgpack_atomic_counter_t*>(buffer)) == 0) {
|
381
|
+
free(buffer);
|
382
|
+
}
|
383
|
+
#else // defined(MSGPACK_USE_CPP03)
|
384
|
+
if (--*reinterpret_cast<std::atomic<unsigned int>*>(buffer) == 0) {
|
385
|
+
free(buffer);
|
386
|
+
}
|
387
|
+
#endif // defined(MSGPACK_USE_CPP03)
|
388
|
+
}
|
389
|
+
|
390
|
+
inline void incr_count(void* buffer)
|
391
|
+
{
|
392
|
+
#if defined(MSGPACK_USE_CPP03)
|
393
|
+
_msgpack_sync_incr_and_fetch(reinterpret_cast<volatile _msgpack_atomic_counter_t*>(buffer));
|
394
|
+
#else // defined(MSGPACK_USE_CPP03)
|
395
|
+
++*reinterpret_cast<std::atomic<unsigned int>*>(buffer);
|
396
|
+
#endif // defined(MSGPACK_USE_CPP03)
|
397
|
+
}
|
398
|
+
|
399
|
+
#if defined(MSGPACK_USE_CPP03)
|
400
|
+
inline _msgpack_atomic_counter_t get_count(void* buffer)
|
401
|
+
{
|
402
|
+
return *reinterpret_cast<volatile _msgpack_atomic_counter_t*>(buffer);
|
403
|
+
}
|
404
|
+
#else // defined(MSGPACK_USE_CPP03)
|
405
|
+
inline std::atomic<unsigned int> const& get_count(void* buffer)
|
406
|
+
{
|
407
|
+
return *reinterpret_cast<std::atomic<unsigned int>*>(buffer);
|
408
|
+
}
|
409
|
+
#endif // defined(MSGPACK_USE_CPP03)
|
410
|
+
|
411
|
+
struct fix_tag {
|
412
|
+
char f1[65]; // FIXME unique size is required. or use is_same meta function.
|
413
|
+
};
|
414
|
+
|
415
|
+
template <typename T>
|
416
|
+
struct value {
|
417
|
+
typedef T type;
|
418
|
+
};
|
419
|
+
template <>
|
420
|
+
struct value<fix_tag> {
|
421
|
+
typedef uint32_t type;
|
38
422
|
};
|
39
423
|
|
424
|
+
template <typename T>
|
425
|
+
inline void load(uint32_t& dst, const char* n, typename msgpack::enable_if<sizeof(T) == sizeof(fix_tag)>::type* = nullptr) {
|
426
|
+
dst = static_cast<uint32_t>(*reinterpret_cast<const uint8_t*>(n)) & 0x0f;
|
427
|
+
}
|
428
|
+
|
429
|
+
template <typename T>
|
430
|
+
inline void load(T& dst, const char* n, typename msgpack::enable_if<sizeof(T) == 1>::type* = nullptr) {
|
431
|
+
dst = static_cast<T>(*reinterpret_cast<const uint8_t*>(n));
|
432
|
+
}
|
433
|
+
|
434
|
+
template <typename T>
|
435
|
+
inline void load(T& dst, const char* n, typename msgpack::enable_if<sizeof(T) == 2>::type* = nullptr) {
|
436
|
+
_msgpack_load16(T, n, &dst);
|
437
|
+
}
|
438
|
+
|
439
|
+
template <typename T>
|
440
|
+
inline void load(T& dst, const char* n, typename msgpack::enable_if<sizeof(T) == 4>::type* = nullptr) {
|
441
|
+
_msgpack_load32(T, n, &dst);
|
442
|
+
}
|
443
|
+
|
444
|
+
template <typename T>
|
445
|
+
inline void load(T& dst, const char* n, typename msgpack::enable_if<sizeof(T) == 8>::type* = nullptr) {
|
446
|
+
_msgpack_load64(T, n, &dst);
|
447
|
+
}
|
448
|
+
|
449
|
+
class context {
|
450
|
+
public:
|
451
|
+
context(unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
452
|
+
:m_trail(0), m_user(f, user_data, limit), m_cs(MSGPACK_CS_HEADER)
|
453
|
+
{
|
454
|
+
m_stack.reserve(MSGPACK_EMBED_STACK_SIZE);
|
455
|
+
m_stack.push_back(unpack_stack());
|
456
|
+
}
|
457
|
+
|
458
|
+
void init()
|
459
|
+
{
|
460
|
+
m_cs = MSGPACK_CS_HEADER;
|
461
|
+
m_trail = 0;
|
462
|
+
m_stack.resize(1);
|
463
|
+
m_stack[0].set_obj(msgpack::object());
|
464
|
+
}
|
465
|
+
|
466
|
+
msgpack::object const& data() const
|
467
|
+
{
|
468
|
+
return m_stack[0].obj();
|
469
|
+
}
|
470
|
+
|
471
|
+
unpack_user& user()
|
472
|
+
{
|
473
|
+
return m_user;
|
474
|
+
}
|
475
|
+
|
476
|
+
unpack_user const& user() const
|
477
|
+
{
|
478
|
+
return m_user;
|
479
|
+
}
|
480
|
+
|
481
|
+
int execute(const char* data, std::size_t len, std::size_t& off);
|
482
|
+
|
483
|
+
private:
|
484
|
+
template <typename T>
|
485
|
+
static uint32_t next_cs(T p)
|
486
|
+
{
|
487
|
+
return static_cast<uint32_t>(*p) & 0x1f;
|
488
|
+
}
|
489
|
+
|
490
|
+
template <typename T, typename Func>
|
491
|
+
int push_aggregate(
|
492
|
+
Func const& f,
|
493
|
+
uint32_t container_type,
|
494
|
+
msgpack::object& obj,
|
495
|
+
const char* load_pos,
|
496
|
+
std::size_t& off) {
|
497
|
+
typename value<T>::type tmp;
|
498
|
+
load<T>(tmp, load_pos);
|
499
|
+
f(m_user, tmp, m_stack.back().obj());
|
500
|
+
if(tmp == 0) {
|
501
|
+
obj = m_stack.back().obj();
|
502
|
+
int ret = push_proc(obj, off);
|
503
|
+
if (ret != 0) return ret;
|
504
|
+
}
|
505
|
+
else {
|
506
|
+
m_stack.back().set_container_type(container_type);
|
507
|
+
m_stack.back().set_count(tmp);
|
508
|
+
if (m_stack.size() <= m_user.limit().depth()) {
|
509
|
+
m_stack.push_back(unpack_stack());
|
510
|
+
}
|
511
|
+
else {
|
512
|
+
throw msgpack::depth_size_overflow("depth size overflow");
|
513
|
+
}
|
514
|
+
m_cs = MSGPACK_CS_HEADER;
|
515
|
+
++m_current;
|
516
|
+
}
|
517
|
+
return 0;
|
518
|
+
}
|
519
|
+
|
520
|
+
int push_item(msgpack::object& obj) {
|
521
|
+
bool finish = false;
|
522
|
+
while (!finish) {
|
523
|
+
if(m_stack.size() == 1) {
|
524
|
+
return 1;
|
525
|
+
}
|
526
|
+
unpack_stack& sp = *(m_stack.end() - 2);
|
527
|
+
switch(sp.container_type()) {
|
528
|
+
case MSGPACK_CT_ARRAY_ITEM:
|
529
|
+
unpack_array_item(sp.obj(), obj);
|
530
|
+
if(sp.decr_count() == 0) {
|
531
|
+
obj = sp.obj();
|
532
|
+
m_stack.pop_back();
|
533
|
+
}
|
534
|
+
else {
|
535
|
+
finish = true;
|
536
|
+
}
|
537
|
+
break;
|
538
|
+
case MSGPACK_CT_MAP_KEY:
|
539
|
+
sp.set_map_key(obj);
|
540
|
+
sp.set_container_type(MSGPACK_CT_MAP_VALUE);
|
541
|
+
finish = true;
|
542
|
+
break;
|
543
|
+
case MSGPACK_CT_MAP_VALUE:
|
544
|
+
unpack_map_item(sp.obj(), sp.map_key(), obj);
|
545
|
+
if(sp.decr_count() == 0) {
|
546
|
+
obj = sp.obj();
|
547
|
+
m_stack.pop_back();
|
548
|
+
}
|
549
|
+
else {
|
550
|
+
sp.set_container_type(MSGPACK_CT_MAP_KEY);
|
551
|
+
finish = true;
|
552
|
+
}
|
553
|
+
break;
|
554
|
+
default:
|
555
|
+
return -1;
|
556
|
+
}
|
557
|
+
}
|
558
|
+
return 0;
|
559
|
+
}
|
560
|
+
|
561
|
+
int push_proc(msgpack::object& obj, std::size_t& off) {
|
562
|
+
int ret = push_item(obj);
|
563
|
+
if (ret > 0) {
|
564
|
+
m_stack[0].set_obj(obj);
|
565
|
+
++m_current;
|
566
|
+
/*printf("-- finish --\n"); */
|
567
|
+
off = m_current - m_start;
|
568
|
+
}
|
569
|
+
else if (ret < 0) {
|
570
|
+
off = m_current - m_start;
|
571
|
+
}
|
572
|
+
else {
|
573
|
+
m_cs = MSGPACK_CS_HEADER;
|
574
|
+
++m_current;
|
575
|
+
}
|
576
|
+
return ret;
|
577
|
+
}
|
578
|
+
|
579
|
+
template <std::size_t N>
|
580
|
+
static void check_ext_size(std::size_t /*size*/) {
|
581
|
+
}
|
582
|
+
|
583
|
+
private:
|
584
|
+
char const* m_start;
|
585
|
+
char const* m_current;
|
586
|
+
|
587
|
+
std::size_t m_trail;
|
588
|
+
unpack_user m_user;
|
589
|
+
uint32_t m_cs;
|
590
|
+
std::vector<unpack_stack> m_stack;
|
591
|
+
};
|
592
|
+
|
593
|
+
template <>
|
594
|
+
inline void context::check_ext_size<4>(std::size_t size) {
|
595
|
+
if (size == 0xffffffff) throw msgpack::ext_size_overflow("ext size overflow");
|
596
|
+
}
|
597
|
+
|
598
|
+
inline int context::execute(const char* data, std::size_t len, std::size_t& off)
|
599
|
+
{
|
600
|
+
assert(len >= off);
|
601
|
+
|
602
|
+
m_start = data;
|
603
|
+
m_current = data + off;
|
604
|
+
const char* const pe = data + len;
|
605
|
+
const char* n = nullptr;
|
606
|
+
|
607
|
+
msgpack::object obj;
|
608
|
+
|
609
|
+
if(m_current == pe) {
|
610
|
+
off = m_current - m_start;
|
611
|
+
return 0;
|
612
|
+
}
|
613
|
+
bool fixed_trail_again = false;
|
614
|
+
do {
|
615
|
+
if (m_cs == MSGPACK_CS_HEADER) {
|
616
|
+
fixed_trail_again = false;
|
617
|
+
int selector = *reinterpret_cast<const unsigned char*>(m_current);
|
618
|
+
if (0x00 <= selector && selector <= 0x7f) { // Positive Fixnum
|
619
|
+
unpack_uint8(*reinterpret_cast<const uint8_t*>(m_current), obj);
|
620
|
+
int ret = push_proc(obj, off);
|
621
|
+
if (ret != 0) return ret;
|
622
|
+
} else if(0xe0 <= selector && selector <= 0xff) { // Negative Fixnum
|
623
|
+
unpack_int8(*reinterpret_cast<const int8_t*>(m_current), obj);
|
624
|
+
int ret = push_proc(obj, off);
|
625
|
+
if (ret != 0) return ret;
|
626
|
+
} else if (0xc4 <= selector && selector <= 0xdf) {
|
627
|
+
const uint32_t trail[] = {
|
628
|
+
1, // bin 8 0xc4
|
629
|
+
2, // bin 16 0xc5
|
630
|
+
4, // bin 32 0xc6
|
631
|
+
1, // ext 8 0xc7
|
632
|
+
2, // ext 16 0xc8
|
633
|
+
4, // ext 32 0xc9
|
634
|
+
4, // float 32 0xca
|
635
|
+
8, // float 64 0xcb
|
636
|
+
1, // uint 8 0xcc
|
637
|
+
2, // uint 16 0xcd
|
638
|
+
4, // uint 32 0xce
|
639
|
+
8, // uint 64 0xcf
|
640
|
+
1, // int 8 0xd0
|
641
|
+
2, // int 16 0xd1
|
642
|
+
4, // int 32 0xd2
|
643
|
+
8, // int 64 0xd3
|
644
|
+
2, // fixext 1 0xd4
|
645
|
+
3, // fixext 2 0xd5
|
646
|
+
5, // fixext 4 0xd6
|
647
|
+
9, // fixext 8 0xd7
|
648
|
+
17,// fixext 16 0xd8
|
649
|
+
1, // str 8 0xd9
|
650
|
+
2, // str 16 0xda
|
651
|
+
4, // str 32 0xdb
|
652
|
+
2, // array 16 0xdc
|
653
|
+
4, // array 32 0xdd
|
654
|
+
2, // map 16 0xde
|
655
|
+
4, // map 32 0xdf
|
656
|
+
};
|
657
|
+
m_trail = trail[selector - 0xc4];
|
658
|
+
m_cs = next_cs(m_current);
|
659
|
+
fixed_trail_again = true;
|
660
|
+
} else if(0xa0 <= selector && selector <= 0xbf) { // FixStr
|
661
|
+
m_trail = static_cast<uint32_t>(*m_current) & 0x1f;
|
662
|
+
if(m_trail == 0) {
|
663
|
+
unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
664
|
+
int ret = push_proc(obj, off);
|
665
|
+
if (ret != 0) return ret;
|
666
|
+
}
|
667
|
+
else {
|
668
|
+
m_cs = MSGPACK_ACS_STR_VALUE;
|
669
|
+
fixed_trail_again = true;
|
670
|
+
}
|
671
|
+
|
672
|
+
} else if(0x90 <= selector && selector <= 0x9f) { // FixArray
|
673
|
+
int ret = push_aggregate<fix_tag>(
|
674
|
+
unpack_array(), MSGPACK_CT_ARRAY_ITEM, obj, m_current, off);
|
675
|
+
if (ret != 0) return ret;
|
676
|
+
} else if(0x80 <= selector && selector <= 0x8f) { // FixMap
|
677
|
+
int ret = push_aggregate<fix_tag>(
|
678
|
+
unpack_map(), MSGPACK_CT_MAP_KEY, obj, m_current, off);
|
679
|
+
if (ret != 0) return ret;
|
680
|
+
} else if(selector == 0xc2) { // false
|
681
|
+
unpack_false(obj);
|
682
|
+
int ret = push_proc(obj, off);
|
683
|
+
if (ret != 0) return ret;
|
684
|
+
} else if(selector == 0xc3) { // true
|
685
|
+
unpack_true(obj);
|
686
|
+
int ret = push_proc(obj, off);
|
687
|
+
if (ret != 0) return ret;
|
688
|
+
} else if(selector == 0xc0) { // nil
|
689
|
+
unpack_nil(obj);
|
690
|
+
int ret = push_proc(obj, off);
|
691
|
+
if (ret != 0) return ret;
|
692
|
+
} else {
|
693
|
+
off = m_current - m_start;
|
694
|
+
return -1;
|
695
|
+
}
|
696
|
+
// end MSGPACK_CS_HEADER
|
697
|
+
}
|
698
|
+
if (m_cs != MSGPACK_CS_HEADER || fixed_trail_again) {
|
699
|
+
if (fixed_trail_again) {
|
700
|
+
++m_current;
|
701
|
+
fixed_trail_again = false;
|
702
|
+
}
|
703
|
+
if(static_cast<std::size_t>(pe - m_current) < m_trail) {
|
704
|
+
off = m_current - m_start;
|
705
|
+
return 0;
|
706
|
+
}
|
707
|
+
n = m_current;
|
708
|
+
m_current += m_trail - 1;
|
709
|
+
switch(m_cs) {
|
710
|
+
//case MSGPACK_CS_
|
711
|
+
//case MSGPACK_CS_
|
712
|
+
case MSGPACK_CS_FLOAT: {
|
713
|
+
union { uint32_t i; float f; } mem;
|
714
|
+
load<uint32_t>(mem.i, n);
|
715
|
+
unpack_float(mem.f, obj);
|
716
|
+
int ret = push_proc(obj, off);
|
717
|
+
if (ret != 0) return ret;
|
718
|
+
} break;
|
719
|
+
case MSGPACK_CS_DOUBLE: {
|
720
|
+
union { uint64_t i; double f; } mem;
|
721
|
+
load<uint64_t>(mem.i, n);
|
722
|
+
#if defined(__arm__) && !(__ARM_EABI__) // arm-oabi
|
723
|
+
// https://github.com/msgpack/msgpack-perl/pull/1
|
724
|
+
mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
|
725
|
+
#endif
|
726
|
+
unpack_double(mem.f, obj);
|
727
|
+
int ret = push_proc(obj, off);
|
728
|
+
if (ret != 0) return ret;
|
729
|
+
} break;
|
730
|
+
case MSGPACK_CS_UINT_8: {
|
731
|
+
uint8_t tmp;
|
732
|
+
load<uint8_t>(tmp, n);
|
733
|
+
unpack_uint8(tmp, obj);
|
734
|
+
int ret = push_proc(obj, off);
|
735
|
+
if (ret != 0) return ret;
|
736
|
+
} break;
|
737
|
+
case MSGPACK_CS_UINT_16: {
|
738
|
+
uint16_t tmp;
|
739
|
+
load<uint16_t>(tmp, n);
|
740
|
+
unpack_uint16(tmp, obj);
|
741
|
+
int ret = push_proc(obj, off);
|
742
|
+
if (ret != 0) return ret;
|
743
|
+
} break;
|
744
|
+
case MSGPACK_CS_UINT_32: {
|
745
|
+
uint32_t tmp;
|
746
|
+
load<uint32_t>(tmp, n);
|
747
|
+
unpack_uint32(tmp, obj);
|
748
|
+
int ret = push_proc(obj, off);
|
749
|
+
if (ret != 0) return ret;
|
750
|
+
} break;
|
751
|
+
case MSGPACK_CS_UINT_64: {
|
752
|
+
uint64_t tmp;
|
753
|
+
load<uint64_t>(tmp, n);
|
754
|
+
unpack_uint64(tmp, obj);
|
755
|
+
int ret = push_proc(obj, off);
|
756
|
+
if (ret != 0) return ret;
|
757
|
+
} break;
|
758
|
+
case MSGPACK_CS_INT_8: {
|
759
|
+
int8_t tmp;
|
760
|
+
load<int8_t>(tmp, n);
|
761
|
+
unpack_int8(tmp, obj);
|
762
|
+
int ret = push_proc(obj, off);
|
763
|
+
if (ret != 0) return ret;
|
764
|
+
} break;
|
765
|
+
case MSGPACK_CS_INT_16: {
|
766
|
+
int16_t tmp;
|
767
|
+
load<int16_t>(tmp, n);
|
768
|
+
unpack_int16(tmp, obj);
|
769
|
+
int ret = push_proc(obj, off);
|
770
|
+
if (ret != 0) return ret;
|
771
|
+
} break;
|
772
|
+
case MSGPACK_CS_INT_32: {
|
773
|
+
int32_t tmp;
|
774
|
+
load<int32_t>(tmp, n);
|
775
|
+
unpack_int32(tmp, obj);
|
776
|
+
int ret = push_proc(obj, off);
|
777
|
+
if (ret != 0) return ret;
|
778
|
+
} break;
|
779
|
+
case MSGPACK_CS_INT_64: {
|
780
|
+
int64_t tmp;
|
781
|
+
load<int64_t>(tmp, n);
|
782
|
+
unpack_int64(tmp, obj);
|
783
|
+
int ret = push_proc(obj, off);
|
784
|
+
if (ret != 0) return ret;
|
785
|
+
} break;
|
786
|
+
case MSGPACK_CS_FIXEXT_1: {
|
787
|
+
unpack_ext(m_user, n, 1+1, obj);
|
788
|
+
int ret = push_proc(obj, off);
|
789
|
+
if (ret != 0) return ret;
|
790
|
+
} break;
|
791
|
+
case MSGPACK_CS_FIXEXT_2: {
|
792
|
+
unpack_ext(m_user, n, 2+1, obj);
|
793
|
+
int ret = push_proc(obj, off);
|
794
|
+
if (ret != 0) return ret;
|
795
|
+
} break;
|
796
|
+
case MSGPACK_CS_FIXEXT_4: {
|
797
|
+
unpack_ext(m_user, n, 4+1, obj);
|
798
|
+
int ret = push_proc(obj, off);
|
799
|
+
if (ret != 0) return ret;
|
800
|
+
} break;
|
801
|
+
case MSGPACK_CS_FIXEXT_8: {
|
802
|
+
unpack_ext(m_user, n, 8+1, obj);
|
803
|
+
int ret = push_proc(obj, off);
|
804
|
+
if (ret != 0) return ret;
|
805
|
+
} break;
|
806
|
+
case MSGPACK_CS_FIXEXT_16: {
|
807
|
+
unpack_ext(m_user, n, 16+1, obj);
|
808
|
+
int ret = push_proc(obj, off);
|
809
|
+
if (ret != 0) return ret;
|
810
|
+
} break;
|
811
|
+
case MSGPACK_CS_STR_8: {
|
812
|
+
uint8_t tmp;
|
813
|
+
load<uint8_t>(tmp, n);
|
814
|
+
m_trail = tmp;
|
815
|
+
if(m_trail == 0) {
|
816
|
+
unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
817
|
+
int ret = push_proc(obj, off);
|
818
|
+
if (ret != 0) return ret;
|
819
|
+
}
|
820
|
+
else {
|
821
|
+
m_cs = MSGPACK_ACS_STR_VALUE;
|
822
|
+
fixed_trail_again = true;
|
823
|
+
}
|
824
|
+
} break;
|
825
|
+
case MSGPACK_CS_BIN_8: {
|
826
|
+
uint8_t tmp;
|
827
|
+
load<uint8_t>(tmp, n);
|
828
|
+
m_trail = tmp;
|
829
|
+
if(m_trail == 0) {
|
830
|
+
unpack_bin(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
831
|
+
int ret = push_proc(obj, off);
|
832
|
+
if (ret != 0) return ret;
|
833
|
+
}
|
834
|
+
else {
|
835
|
+
m_cs = MSGPACK_ACS_BIN_VALUE;
|
836
|
+
fixed_trail_again = true;
|
837
|
+
}
|
838
|
+
} break;
|
839
|
+
case MSGPACK_CS_EXT_8: {
|
840
|
+
uint8_t tmp;
|
841
|
+
load<uint8_t>(tmp, n);
|
842
|
+
m_trail = tmp + 1;
|
843
|
+
if(m_trail == 0) {
|
844
|
+
unpack_ext(m_user, n, m_trail, obj);
|
845
|
+
int ret = push_proc(obj, off);
|
846
|
+
if (ret != 0) return ret;
|
847
|
+
}
|
848
|
+
else {
|
849
|
+
m_cs = MSGPACK_ACS_EXT_VALUE;
|
850
|
+
fixed_trail_again = true;
|
851
|
+
}
|
852
|
+
} break;
|
853
|
+
case MSGPACK_CS_STR_16: {
|
854
|
+
uint16_t tmp;
|
855
|
+
load<uint16_t>(tmp, n);
|
856
|
+
m_trail = tmp;
|
857
|
+
if(m_trail == 0) {
|
858
|
+
unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
859
|
+
int ret = push_proc(obj, off);
|
860
|
+
if (ret != 0) return ret;
|
861
|
+
}
|
862
|
+
else {
|
863
|
+
m_cs = MSGPACK_ACS_STR_VALUE;
|
864
|
+
fixed_trail_again = true;
|
865
|
+
}
|
866
|
+
} break;
|
867
|
+
case MSGPACK_CS_BIN_16: {
|
868
|
+
uint16_t tmp;
|
869
|
+
load<uint16_t>(tmp, n);
|
870
|
+
m_trail = tmp;
|
871
|
+
if(m_trail == 0) {
|
872
|
+
unpack_bin(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
873
|
+
int ret = push_proc(obj, off);
|
874
|
+
if (ret != 0) return ret;
|
875
|
+
}
|
876
|
+
else {
|
877
|
+
m_cs = MSGPACK_ACS_BIN_VALUE;
|
878
|
+
fixed_trail_again = true;
|
879
|
+
}
|
880
|
+
} break;
|
881
|
+
case MSGPACK_CS_EXT_16: {
|
882
|
+
uint16_t tmp;
|
883
|
+
load<uint16_t>(tmp, n);
|
884
|
+
m_trail = tmp + 1;
|
885
|
+
if(m_trail == 0) {
|
886
|
+
unpack_ext(m_user, n, m_trail, obj);
|
887
|
+
int ret = push_proc(obj, off);
|
888
|
+
if (ret != 0) return ret;
|
889
|
+
}
|
890
|
+
else {
|
891
|
+
m_cs = MSGPACK_ACS_EXT_VALUE;
|
892
|
+
fixed_trail_again = true;
|
893
|
+
}
|
894
|
+
} break;
|
895
|
+
case MSGPACK_CS_STR_32: {
|
896
|
+
uint32_t tmp;
|
897
|
+
load<uint32_t>(tmp, n);
|
898
|
+
m_trail = tmp;
|
899
|
+
if(m_trail == 0) {
|
900
|
+
unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
901
|
+
int ret = push_proc(obj, off);
|
902
|
+
if (ret != 0) return ret;
|
903
|
+
}
|
904
|
+
else {
|
905
|
+
m_cs = MSGPACK_ACS_STR_VALUE;
|
906
|
+
fixed_trail_again = true;
|
907
|
+
}
|
908
|
+
} break;
|
909
|
+
case MSGPACK_CS_BIN_32: {
|
910
|
+
uint32_t tmp;
|
911
|
+
load<uint32_t>(tmp, n);
|
912
|
+
m_trail = tmp;
|
913
|
+
if(m_trail == 0) {
|
914
|
+
unpack_bin(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
915
|
+
int ret = push_proc(obj, off);
|
916
|
+
if (ret != 0) return ret;
|
917
|
+
}
|
918
|
+
else {
|
919
|
+
m_cs = MSGPACK_ACS_BIN_VALUE;
|
920
|
+
fixed_trail_again = true;
|
921
|
+
}
|
922
|
+
} break;
|
923
|
+
case MSGPACK_CS_EXT_32: {
|
924
|
+
uint32_t tmp;
|
925
|
+
load<uint32_t>(tmp, n);
|
926
|
+
check_ext_size<sizeof(std::size_t)>(tmp);
|
927
|
+
m_trail = tmp;
|
928
|
+
++m_trail;
|
929
|
+
if(m_trail == 0) {
|
930
|
+
unpack_ext(m_user, n, m_trail, obj);
|
931
|
+
int ret = push_proc(obj, off);
|
932
|
+
if (ret != 0) return ret;
|
933
|
+
}
|
934
|
+
else {
|
935
|
+
m_cs = MSGPACK_ACS_EXT_VALUE;
|
936
|
+
fixed_trail_again = true;
|
937
|
+
}
|
938
|
+
} break;
|
939
|
+
case MSGPACK_ACS_STR_VALUE: {
|
940
|
+
unpack_str(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
941
|
+
int ret = push_proc(obj, off);
|
942
|
+
if (ret != 0) return ret;
|
943
|
+
} break;
|
944
|
+
case MSGPACK_ACS_BIN_VALUE: {
|
945
|
+
unpack_bin(m_user, n, static_cast<uint32_t>(m_trail), obj);
|
946
|
+
int ret = push_proc(obj, off);
|
947
|
+
if (ret != 0) return ret;
|
948
|
+
} break;
|
949
|
+
case MSGPACK_ACS_EXT_VALUE: {
|
950
|
+
unpack_ext(m_user, n, m_trail, obj);
|
951
|
+
int ret = push_proc(obj, off);
|
952
|
+
if (ret != 0) return ret;
|
953
|
+
} break;
|
954
|
+
case MSGPACK_CS_ARRAY_16: {
|
955
|
+
int ret = push_aggregate<uint16_t>(
|
956
|
+
unpack_array(), MSGPACK_CT_ARRAY_ITEM, obj, n, off);
|
957
|
+
if (ret != 0) return ret;
|
958
|
+
} break;
|
959
|
+
case MSGPACK_CS_ARRAY_32: {
|
960
|
+
/* FIXME security guard */
|
961
|
+
int ret = push_aggregate<uint32_t>(
|
962
|
+
unpack_array(), MSGPACK_CT_ARRAY_ITEM, obj, n, off);
|
963
|
+
if (ret != 0) return ret;
|
964
|
+
} break;
|
965
|
+
case MSGPACK_CS_MAP_16: {
|
966
|
+
int ret = push_aggregate<uint16_t>(
|
967
|
+
unpack_map(), MSGPACK_CT_MAP_KEY, obj, n, off);
|
968
|
+
if (ret != 0) return ret;
|
969
|
+
} break;
|
970
|
+
case MSGPACK_CS_MAP_32: {
|
971
|
+
/* FIXME security guard */
|
972
|
+
int ret = push_aggregate<uint32_t>(
|
973
|
+
unpack_map(), MSGPACK_CT_MAP_KEY, obj, n, off);
|
974
|
+
if (ret != 0) return ret;
|
975
|
+
} break;
|
976
|
+
default:
|
977
|
+
off = m_current - m_start;
|
978
|
+
return -1;
|
979
|
+
}
|
980
|
+
}
|
981
|
+
} while(m_current != pe);
|
982
|
+
|
983
|
+
off = m_current - m_start;
|
984
|
+
return 0;
|
985
|
+
}
|
986
|
+
|
987
|
+
} // detail
|
988
|
+
|
40
989
|
|
41
990
|
class unpacked {
|
42
991
|
public:
|
43
|
-
|
992
|
+
unpacked() {}
|
44
993
|
|
45
|
-
|
46
|
-
|
994
|
+
unpacked(msgpack::object const& obj, msgpack::unique_ptr<msgpack::zone> z) :
|
995
|
+
m_obj(obj), m_zone(msgpack::move(z)) { }
|
47
996
|
|
48
|
-
|
49
|
-
|
997
|
+
void set(msgpack::object const& obj)
|
998
|
+
{ m_obj = obj; }
|
50
999
|
|
51
|
-
|
52
|
-
|
1000
|
+
const msgpack::object& get() const
|
1001
|
+
{ return m_obj; }
|
53
1002
|
|
54
|
-
|
55
|
-
|
1003
|
+
msgpack::unique_ptr<msgpack::zone>& zone()
|
1004
|
+
{ return m_zone; }
|
56
1005
|
|
57
|
-
|
58
|
-
|
1006
|
+
const msgpack::unique_ptr<msgpack::zone>& zone() const
|
1007
|
+
{ return m_zone; }
|
59
1008
|
|
60
1009
|
private:
|
61
|
-
|
62
|
-
|
1010
|
+
msgpack::object m_obj;
|
1011
|
+
msgpack::unique_ptr<msgpack::zone> m_zone;
|
63
1012
|
};
|
64
1013
|
|
65
1014
|
|
66
|
-
class unpacker
|
1015
|
+
class unpacker {
|
67
1016
|
public:
|
68
|
-
|
69
|
-
|
1017
|
+
unpacker(unpack_reference_func f = &unpacker::default_reference_func,
|
1018
|
+
void* user_data = nullptr,
|
1019
|
+
std::size_t init_buffer_size = MSGPACK_UNPACKER_INIT_BUFFER_SIZE,
|
1020
|
+
unpack_limit const& limit = unpack_limit());
|
1021
|
+
|
1022
|
+
#if !defined(MSGPACK_USE_CPP03)
|
1023
|
+
unpacker(unpacker&& other);
|
1024
|
+
unpacker& operator=(unpacker&& other);
|
1025
|
+
#endif // !defined(MSGPACK_USE_CPP03)
|
1026
|
+
|
1027
|
+
~unpacker();
|
70
1028
|
|
71
1029
|
public:
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
1030
|
+
/*! 1. reserve buffer. at least `size' bytes of capacity will be ready */
|
1031
|
+
void reserve_buffer(std::size_t size = MSGPACK_UNPACKER_RESERVE_SIZE);
|
1032
|
+
|
1033
|
+
/*! 2. read data to the buffer() up to buffer_capacity() bytes */
|
1034
|
+
char* buffer();
|
1035
|
+
std::size_t buffer_capacity() const;
|
1036
|
+
|
1037
|
+
/*! 3. specify the number of bytes actually copied */
|
1038
|
+
void buffer_consumed(std::size_t size);
|
1039
|
+
|
1040
|
+
/*! 4. repeat next() until it retunrs false */
|
1041
|
+
bool next(unpacked* result);
|
1042
|
+
bool next(unpacked& result, bool& referenced);
|
1043
|
+
bool next(unpacked& result);
|
1044
|
+
|
1045
|
+
/*! 5. check if the size of message doesn't exceed assumption. */
|
1046
|
+
std::size_t message_size() const;
|
1047
|
+
|
1048
|
+
// Basic usage of the unpacker is as following:
|
1049
|
+
//
|
1050
|
+
// unpacker pac;
|
1051
|
+
// while( /* input is readable */ ) {
|
1052
|
+
//
|
1053
|
+
// // 1.
|
1054
|
+
// pac.reserve_buffer(32*1024);
|
1055
|
+
//
|
1056
|
+
// // 2.
|
1057
|
+
// std::size_t bytes = input.readsome(pac.buffer(), pac.buffer_capacity());
|
1058
|
+
//
|
1059
|
+
// // error handling ...
|
1060
|
+
//
|
1061
|
+
// // 3.
|
1062
|
+
// pac.buffer_consumed(bytes);
|
1063
|
+
//
|
1064
|
+
// // 4.
|
1065
|
+
// unpacked result;
|
1066
|
+
// while(pac.next(&result)) {
|
1067
|
+
// // do some with the object with the zone.
|
1068
|
+
// object obj = result.get();
|
1069
|
+
// std::auto_ptr<msgpack:zone> z = result.zone();
|
1070
|
+
// on_message(obj, z);
|
1071
|
+
//
|
1072
|
+
// //// boost::shared_ptr is also usable:
|
1073
|
+
// // boost::shared_ptr<zone> life(z.release());
|
1074
|
+
// // on_message(result.get(), life);
|
1075
|
+
// }
|
1076
|
+
//
|
1077
|
+
// // 5.
|
1078
|
+
// if(pac.message_size() > 10*1024*1024) {
|
1079
|
+
// throw std::runtime_error("message is too large");
|
1080
|
+
// }
|
1081
|
+
// }
|
1082
|
+
//
|
1083
|
+
|
1084
|
+
/*! for backward compatibility */
|
1085
|
+
bool execute();
|
1086
|
+
|
1087
|
+
/*! for backward compatibility */
|
1088
|
+
msgpack::object const& data();
|
1089
|
+
|
1090
|
+
/*! for backward compatibility */
|
1091
|
+
msgpack::zone* release_zone();
|
1092
|
+
|
1093
|
+
/*! for backward compatibility */
|
1094
|
+
void reset_zone();
|
1095
|
+
|
1096
|
+
/*! for backward compatibility */
|
1097
|
+
void reset();
|
138
1098
|
|
139
1099
|
public:
|
140
|
-
|
141
|
-
|
142
|
-
|
1100
|
+
// These functions are usable when non-MessagePack message follows after
|
1101
|
+
// MessagePack message.
|
1102
|
+
std::size_t parsed_size() const;
|
143
1103
|
|
144
|
-
|
145
|
-
|
146
|
-
|
1104
|
+
/*! get address of the buffer that is not parsed */
|
1105
|
+
char* nonparsed_buffer();
|
1106
|
+
std::size_t nonparsed_size() const;
|
147
1107
|
|
148
|
-
|
149
|
-
|
150
|
-
|
1108
|
+
/*! skip specified size of non-parsed buffer, leaving the buffer */
|
1109
|
+
// Note that the `size' argument must be smaller than nonparsed_size()
|
1110
|
+
void skip_nonparsed_buffer(std::size_t size);
|
151
1111
|
|
152
|
-
|
153
|
-
|
154
|
-
|
1112
|
+
/*! remove unparsed buffer from unpacker */
|
1113
|
+
// Note that reset() leaves non-parsed buffer.
|
1114
|
+
void remove_nonparsed_buffer();
|
155
1115
|
|
156
1116
|
private:
|
157
|
-
|
1117
|
+
void expand_buffer(std::size_t size);
|
1118
|
+
int execute_imp();
|
1119
|
+
bool flush_zone();
|
1120
|
+
static bool default_reference_func(msgpack::type::object_type type, std::size_t len, void*);
|
158
1121
|
|
159
1122
|
private:
|
160
|
-
|
1123
|
+
char* m_buffer;
|
1124
|
+
std::size_t m_used;
|
1125
|
+
std::size_t m_free;
|
1126
|
+
std::size_t m_off;
|
1127
|
+
std::size_t m_parsed;
|
1128
|
+
msgpack::unique_ptr<msgpack::zone> m_z;
|
1129
|
+
std::size_t m_initial_buffer_size;
|
1130
|
+
detail::context m_ctx;
|
1131
|
+
|
1132
|
+
#if defined(MSGPACK_USE_CPP03)
|
1133
|
+
private:
|
1134
|
+
unpacker(const unpacker&);
|
1135
|
+
unpacker& operator=(const unpacker&);
|
1136
|
+
#else // defined(MSGPACK_USE_CPP03)
|
1137
|
+
unpacker(const unpacker&) = delete;
|
1138
|
+
unpacker& operator=(const unpacker&) = delete;
|
1139
|
+
#endif // defined(MSGPACK_USE_CPP03)
|
161
1140
|
};
|
162
1141
|
|
163
|
-
|
164
|
-
|
165
|
-
|
1142
|
+
#if !defined(MSGPACK_USE_CPP03)
|
1143
|
+
|
1144
|
+
unpacked unpack(
|
1145
|
+
const char* data, std::size_t len, std::size_t& off, bool& referenced,
|
1146
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1147
|
+
unpack_limit const& limit = unpack_limit());
|
1148
|
+
unpacked unpack(
|
1149
|
+
const char* data, std::size_t len, std::size_t& off,
|
1150
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1151
|
+
unpack_limit const& limit = unpack_limit());
|
1152
|
+
unpacked unpack(
|
1153
|
+
const char* data, std::size_t len, bool& referenced,
|
1154
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1155
|
+
unpack_limit const& limit = unpack_limit());
|
1156
|
+
unpacked unpack(
|
1157
|
+
const char* data, std::size_t len,
|
1158
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1159
|
+
unpack_limit const& limit = unpack_limit());
|
1160
|
+
|
1161
|
+
#endif // !defined(MSGPACK_USE_CPP03)
|
1162
|
+
|
1163
|
+
|
1164
|
+
void unpack(unpacked& result,
|
1165
|
+
const char* data, std::size_t len, std::size_t& off, bool& referenced,
|
1166
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1167
|
+
unpack_limit const& limit = unpack_limit());
|
1168
|
+
void unpack(unpacked& result,
|
1169
|
+
const char* data, std::size_t len, std::size_t& off,
|
1170
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1171
|
+
unpack_limit const& limit = unpack_limit());
|
1172
|
+
void unpack(unpacked& result,
|
1173
|
+
const char* data, std::size_t len, bool& referenced,
|
1174
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1175
|
+
unpack_limit const& limit = unpack_limit());
|
1176
|
+
|
1177
|
+
void unpack(unpacked& result,
|
1178
|
+
const char* data, std::size_t len,
|
1179
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1180
|
+
unpack_limit const& limit = unpack_limit());
|
1181
|
+
|
1182
|
+
msgpack::object unpack(
|
1183
|
+
msgpack::zone& z,
|
1184
|
+
const char* data, std::size_t len, std::size_t& off, bool& referenced,
|
1185
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1186
|
+
unpack_limit const& limit = unpack_limit());
|
1187
|
+
msgpack::object unpack(
|
1188
|
+
msgpack::zone& z,
|
1189
|
+
const char* data, std::size_t len, std::size_t& off,
|
1190
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1191
|
+
unpack_limit const& limit = unpack_limit());
|
1192
|
+
msgpack::object unpack(
|
1193
|
+
msgpack::zone& z,
|
1194
|
+
const char* data, std::size_t len, bool& referenced,
|
1195
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1196
|
+
unpack_limit const& limit = unpack_limit());
|
1197
|
+
msgpack::object unpack(
|
1198
|
+
msgpack::zone& z,
|
1199
|
+
const char* data, std::size_t len,
|
1200
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1201
|
+
unpack_limit const& limit = unpack_limit());
|
166
1202
|
|
167
1203
|
|
168
1204
|
// obsolete
|
1205
|
+
void unpack(unpacked* result,
|
1206
|
+
const char* data, std::size_t len, std::size_t* off = nullptr, bool* referenced = nullptr,
|
1207
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1208
|
+
unpack_limit const& limit = unpack_limit());
|
1209
|
+
|
1210
|
+
|
1211
|
+
// for internal use
|
169
1212
|
typedef enum {
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
1213
|
+
UNPACK_SUCCESS = 2,
|
1214
|
+
UNPACK_EXTRA_BYTES = 1,
|
1215
|
+
UNPACK_CONTINUE = 0,
|
1216
|
+
UNPACK_PARSE_ERROR = -1
|
174
1217
|
} unpack_return;
|
175
1218
|
|
176
|
-
|
177
|
-
|
178
|
-
|
1219
|
+
inline unpacker::unpacker(unpack_reference_func f,
|
1220
|
+
void* user_data,
|
1221
|
+
std::size_t initial_buffer_size,
|
1222
|
+
unpack_limit const& limit)
|
1223
|
+
:m_z(new msgpack::zone), m_ctx(f, user_data, limit)
|
1224
|
+
{
|
1225
|
+
if(initial_buffer_size < COUNTER_SIZE) {
|
1226
|
+
initial_buffer_size = COUNTER_SIZE;
|
1227
|
+
}
|
1228
|
+
|
1229
|
+
char* buffer = static_cast<char*>(::malloc(initial_buffer_size));
|
1230
|
+
if(!buffer) {
|
1231
|
+
throw std::bad_alloc();
|
1232
|
+
}
|
1233
|
+
|
1234
|
+
m_buffer = buffer;
|
1235
|
+
m_used = COUNTER_SIZE;
|
1236
|
+
m_free = initial_buffer_size - m_used;
|
1237
|
+
m_off = COUNTER_SIZE;
|
1238
|
+
m_parsed = 0;
|
1239
|
+
m_initial_buffer_size = initial_buffer_size;
|
1240
|
+
|
1241
|
+
detail::init_count(m_buffer);
|
1242
|
+
|
1243
|
+
m_ctx.init();
|
1244
|
+
m_ctx.user().set_zone(*m_z);
|
1245
|
+
m_ctx.user().set_referenced(false);
|
1246
|
+
}
|
179
1247
|
|
1248
|
+
#if !defined(MSGPACK_USE_CPP03)
|
1249
|
+
// Move constructor and move assignment operator
|
1250
|
+
|
1251
|
+
inline unpacker::unpacker(unpacker&& other)
|
1252
|
+
:m_buffer(other.m_buffer),
|
1253
|
+
m_used(other.m_used),
|
1254
|
+
m_free(other.m_free),
|
1255
|
+
m_off(other.m_off),
|
1256
|
+
m_parsed(other.m_parsed),
|
1257
|
+
m_z(std::move(other.m_z)),
|
1258
|
+
m_initial_buffer_size(other.m_initial_buffer_size),
|
1259
|
+
m_ctx(other.m_ctx) {
|
1260
|
+
other.m_buffer = nullptr;
|
1261
|
+
}
|
180
1262
|
|
181
|
-
|
182
|
-
|
1263
|
+
inline unpacker& unpacker::operator=(unpacker&& other) {
|
1264
|
+
this->~unpacker();
|
1265
|
+
new (this) unpacker(std::move(other));
|
1266
|
+
return *this;
|
1267
|
+
}
|
183
1268
|
|
1269
|
+
#endif // !defined(MSGPACK_USE_CPP03)
|
184
1270
|
|
185
|
-
inline unpacker::unpacker(size_t initial_buffer_size)
|
186
|
-
{
|
187
|
-
if(!msgpack_unpacker_init(this, initial_buffer_size)) {
|
188
|
-
throw std::bad_alloc();
|
189
|
-
}
|
190
|
-
}
|
191
1271
|
|
192
1272
|
inline unpacker::~unpacker()
|
193
1273
|
{
|
194
|
-
|
1274
|
+
// These checks are required for move operations.
|
1275
|
+
if (m_buffer) detail::decr_count(m_buffer);
|
195
1276
|
}
|
196
1277
|
|
197
1278
|
|
198
|
-
inline void unpacker::reserve_buffer(size_t size)
|
1279
|
+
inline void unpacker::reserve_buffer(std::size_t size)
|
199
1280
|
{
|
200
|
-
|
201
|
-
|
202
|
-
}
|
1281
|
+
if(m_free >= size) return;
|
1282
|
+
expand_buffer(size);
|
203
1283
|
}
|
204
1284
|
|
205
|
-
inline
|
1285
|
+
inline void unpacker::expand_buffer(std::size_t size)
|
206
1286
|
{
|
207
|
-
|
1287
|
+
if(m_used == m_off && detail::get_count(m_buffer) == 1
|
1288
|
+
&& !m_ctx.user().referenced()) {
|
1289
|
+
// rewind buffer
|
1290
|
+
m_free += m_used - COUNTER_SIZE;
|
1291
|
+
m_used = COUNTER_SIZE;
|
1292
|
+
m_off = COUNTER_SIZE;
|
1293
|
+
|
1294
|
+
if(m_free >= size) return;
|
1295
|
+
}
|
1296
|
+
|
1297
|
+
if(m_off == COUNTER_SIZE) {
|
1298
|
+
std::size_t next_size = (m_used + m_free) * 2; // include COUNTER_SIZE
|
1299
|
+
while(next_size < size + m_used) {
|
1300
|
+
std::size_t tmp_next_size = next_size * 2;
|
1301
|
+
if (tmp_next_size <= next_size) {
|
1302
|
+
next_size = size + m_used;
|
1303
|
+
break;
|
1304
|
+
}
|
1305
|
+
next_size = tmp_next_size;
|
1306
|
+
}
|
1307
|
+
|
1308
|
+
char* tmp = static_cast<char*>(::realloc(m_buffer, next_size));
|
1309
|
+
if(!tmp) {
|
1310
|
+
throw std::bad_alloc();
|
1311
|
+
}
|
1312
|
+
|
1313
|
+
m_buffer = tmp;
|
1314
|
+
m_free = next_size - m_used;
|
1315
|
+
|
1316
|
+
} else {
|
1317
|
+
std::size_t next_size = m_initial_buffer_size; // include COUNTER_SIZE
|
1318
|
+
std::size_t not_parsed = m_used - m_off;
|
1319
|
+
while(next_size < size + not_parsed + COUNTER_SIZE) {
|
1320
|
+
std::size_t tmp_next_size = next_size * 2;
|
1321
|
+
if (tmp_next_size <= next_size) {
|
1322
|
+
next_size = size + not_parsed + COUNTER_SIZE;
|
1323
|
+
break;
|
1324
|
+
}
|
1325
|
+
next_size = tmp_next_size;
|
1326
|
+
}
|
1327
|
+
|
1328
|
+
char* tmp = static_cast<char*>(::malloc(next_size));
|
1329
|
+
if(!tmp) {
|
1330
|
+
throw std::bad_alloc();
|
1331
|
+
}
|
1332
|
+
|
1333
|
+
detail::init_count(tmp);
|
1334
|
+
|
1335
|
+
std::memcpy(tmp+COUNTER_SIZE, m_buffer + m_off, not_parsed);
|
1336
|
+
|
1337
|
+
if(m_ctx.user().referenced()) {
|
1338
|
+
try {
|
1339
|
+
m_z->push_finalizer(&detail::decr_count, m_buffer);
|
1340
|
+
}
|
1341
|
+
catch (...) {
|
1342
|
+
::free(tmp);
|
1343
|
+
throw;
|
1344
|
+
}
|
1345
|
+
m_ctx.user().set_referenced(false);
|
1346
|
+
} else {
|
1347
|
+
detail::decr_count(m_buffer);
|
1348
|
+
}
|
1349
|
+
|
1350
|
+
m_buffer = tmp;
|
1351
|
+
m_used = not_parsed + COUNTER_SIZE;
|
1352
|
+
m_free = next_size - m_used;
|
1353
|
+
m_off = COUNTER_SIZE;
|
1354
|
+
}
|
208
1355
|
}
|
209
1356
|
|
210
|
-
inline
|
1357
|
+
inline char* unpacker::buffer()
|
211
1358
|
{
|
212
|
-
|
1359
|
+
return m_buffer + m_used;
|
213
1360
|
}
|
214
1361
|
|
215
|
-
inline
|
1362
|
+
inline std::size_t unpacker::buffer_capacity() const
|
216
1363
|
{
|
217
|
-
|
1364
|
+
return m_free;
|
218
1365
|
}
|
219
1366
|
|
220
|
-
inline
|
1367
|
+
inline void unpacker::buffer_consumed(std::size_t size)
|
221
1368
|
{
|
222
|
-
|
1369
|
+
m_used += size;
|
1370
|
+
m_free -= size;
|
1371
|
+
}
|
223
1372
|
|
224
|
-
|
225
|
-
|
226
|
-
|
1373
|
+
inline bool unpacker::next(unpacked& result, bool& referenced)
|
1374
|
+
{
|
1375
|
+
referenced = false;
|
1376
|
+
int ret = execute_imp();
|
1377
|
+
if(ret < 0) {
|
1378
|
+
throw msgpack::parse_error("parse error");
|
1379
|
+
}
|
1380
|
+
|
1381
|
+
if(ret == 0) {
|
1382
|
+
result.zone().reset();
|
1383
|
+
result.set(object());
|
1384
|
+
return false;
|
1385
|
+
|
1386
|
+
} else {
|
1387
|
+
referenced = m_ctx.user().referenced();
|
1388
|
+
result.zone().reset( release_zone() );
|
1389
|
+
result.set(data());
|
1390
|
+
reset();
|
1391
|
+
return true;
|
1392
|
+
}
|
1393
|
+
}
|
227
1394
|
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
1395
|
+
inline bool unpacker::next(unpacked& result)
|
1396
|
+
{
|
1397
|
+
bool referenced;
|
1398
|
+
return next(result, referenced);
|
1399
|
+
}
|
232
1400
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
reset();
|
237
|
-
return true;
|
238
|
-
}
|
1401
|
+
inline bool unpacker::next(unpacked* result)
|
1402
|
+
{
|
1403
|
+
return next(*result);
|
239
1404
|
}
|
240
1405
|
|
241
1406
|
|
242
1407
|
inline bool unpacker::execute()
|
243
1408
|
{
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
1409
|
+
int ret = execute_imp();
|
1410
|
+
if(ret < 0) {
|
1411
|
+
throw msgpack::parse_error("parse error");
|
1412
|
+
} else if(ret == 0) {
|
1413
|
+
return false;
|
1414
|
+
} else {
|
1415
|
+
return true;
|
1416
|
+
}
|
252
1417
|
}
|
253
1418
|
|
254
|
-
inline
|
1419
|
+
inline int unpacker::execute_imp()
|
255
1420
|
{
|
256
|
-
|
1421
|
+
std::size_t off = m_off;
|
1422
|
+
int ret = m_ctx.execute(m_buffer, m_used, m_off);
|
1423
|
+
if(m_off > off) {
|
1424
|
+
m_parsed += m_off - off;
|
1425
|
+
}
|
1426
|
+
return ret;
|
257
1427
|
}
|
258
1428
|
|
259
|
-
inline
|
1429
|
+
inline msgpack::object const& unpacker::data()
|
260
1430
|
{
|
261
|
-
|
1431
|
+
return m_ctx.data();
|
1432
|
+
}
|
1433
|
+
|
1434
|
+
inline msgpack::zone* unpacker::release_zone()
|
1435
|
+
{
|
1436
|
+
if(!flush_zone()) {
|
1437
|
+
return nullptr;
|
1438
|
+
}
|
1439
|
+
|
1440
|
+
msgpack::zone* r = new msgpack::zone;
|
1441
|
+
msgpack::zone* old = m_z.release();
|
1442
|
+
m_z.reset(r);
|
1443
|
+
m_ctx.user().set_zone(*m_z);
|
1444
|
+
|
1445
|
+
return old;
|
262
1446
|
}
|
263
1447
|
|
264
1448
|
inline void unpacker::reset_zone()
|
265
1449
|
{
|
266
|
-
|
1450
|
+
m_z->clear();
|
267
1451
|
}
|
268
1452
|
|
269
|
-
inline
|
1453
|
+
inline bool unpacker::flush_zone()
|
270
1454
|
{
|
271
|
-
|
1455
|
+
if(m_ctx.user().referenced()) {
|
1456
|
+
try {
|
1457
|
+
m_z->push_finalizer(&detail::decr_count, m_buffer);
|
1458
|
+
} catch (...) {
|
1459
|
+
return false;
|
1460
|
+
}
|
1461
|
+
m_ctx.user().set_referenced(false);
|
1462
|
+
|
1463
|
+
detail::incr_count(m_buffer);
|
1464
|
+
}
|
1465
|
+
|
1466
|
+
return true;
|
272
1467
|
}
|
273
1468
|
|
1469
|
+
inline void unpacker::reset()
|
1470
|
+
{
|
1471
|
+
m_ctx.init();
|
1472
|
+
// don't reset referenced flag
|
1473
|
+
m_parsed = 0;
|
1474
|
+
}
|
274
1475
|
|
275
|
-
inline size_t unpacker::message_size() const
|
1476
|
+
inline std::size_t unpacker::message_size() const
|
276
1477
|
{
|
277
|
-
|
1478
|
+
return m_parsed - m_off + m_used;
|
278
1479
|
}
|
279
1480
|
|
280
|
-
inline size_t unpacker::parsed_size() const
|
1481
|
+
inline std::size_t unpacker::parsed_size() const
|
281
1482
|
{
|
282
|
-
|
1483
|
+
return m_parsed;
|
283
1484
|
}
|
284
1485
|
|
285
1486
|
inline char* unpacker::nonparsed_buffer()
|
286
1487
|
{
|
287
|
-
|
1488
|
+
return m_buffer + m_off;
|
288
1489
|
}
|
289
1490
|
|
290
|
-
inline size_t unpacker::nonparsed_size() const
|
1491
|
+
inline std::size_t unpacker::nonparsed_size() const
|
291
1492
|
{
|
292
|
-
|
1493
|
+
return m_used - m_off;
|
293
1494
|
}
|
294
1495
|
|
295
|
-
inline void unpacker::skip_nonparsed_buffer(size_t size)
|
1496
|
+
inline void unpacker::skip_nonparsed_buffer(std::size_t size)
|
296
1497
|
{
|
297
|
-
|
1498
|
+
m_off += size;
|
298
1499
|
}
|
299
1500
|
|
300
1501
|
inline void unpacker::remove_nonparsed_buffer()
|
301
1502
|
{
|
302
|
-
|
1503
|
+
m_used = m_off;
|
303
1504
|
}
|
304
1505
|
|
1506
|
+
namespace detail {
|
305
1507
|
|
306
|
-
inline
|
307
|
-
|
1508
|
+
inline unpack_return
|
1509
|
+
unpack_imp(const char* data, std::size_t len, std::size_t& off,
|
1510
|
+
msgpack::zone& result_zone, msgpack::object& result, bool& referenced,
|
1511
|
+
unpack_reference_func f = nullptr, void* user_data = nullptr,
|
1512
|
+
unpack_limit const& limit = unpack_limit())
|
308
1513
|
{
|
309
|
-
|
310
|
-
std::auto_ptr<msgpack::zone> z(new zone());
|
1514
|
+
std::size_t noff = off;
|
311
1515
|
|
312
|
-
|
313
|
-
|
314
|
-
|
1516
|
+
if(len <= noff) {
|
1517
|
+
// FIXME
|
1518
|
+
return UNPACK_CONTINUE;
|
1519
|
+
}
|
315
1520
|
|
316
|
-
|
317
|
-
|
318
|
-
result->get() = obj;
|
319
|
-
result->zone() = z;
|
320
|
-
return;
|
1521
|
+
detail::context ctx(f, user_data, limit);
|
1522
|
+
ctx.init();
|
321
1523
|
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
return;
|
1524
|
+
ctx.user().set_zone(result_zone);
|
1525
|
+
ctx.user().set_referenced(false);
|
1526
|
+
referenced = false;
|
326
1527
|
|
327
|
-
|
328
|
-
|
1528
|
+
int e = ctx.execute(data, len, noff);
|
1529
|
+
if(e < 0) {
|
1530
|
+
return UNPACK_PARSE_ERROR;
|
1531
|
+
}
|
329
1532
|
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
1533
|
+
referenced = ctx.user().referenced();
|
1534
|
+
off = noff;
|
1535
|
+
|
1536
|
+
if(e == 0) {
|
1537
|
+
return UNPACK_CONTINUE;
|
1538
|
+
}
|
1539
|
+
|
1540
|
+
result = ctx.data();
|
1541
|
+
|
1542
|
+
if(noff < len) {
|
1543
|
+
return UNPACK_EXTRA_BYTES;
|
1544
|
+
}
|
1545
|
+
|
1546
|
+
return UNPACK_SUCCESS;
|
334
1547
|
}
|
335
1548
|
|
1549
|
+
} // detail
|
336
1550
|
|
337
|
-
//
|
338
|
-
|
339
|
-
|
1551
|
+
// reference version
|
1552
|
+
|
1553
|
+
#if !defined(MSGPACK_USE_CPP03)
|
1554
|
+
|
1555
|
+
inline unpacked unpack(
|
1556
|
+
const char* data, std::size_t len, std::size_t& off, bool& referenced,
|
1557
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
340
1558
|
{
|
341
|
-
|
342
|
-
|
1559
|
+
msgpack::object obj;
|
1560
|
+
msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
|
1561
|
+
referenced = false;
|
1562
|
+
unpack_return ret = detail::unpack_imp(
|
1563
|
+
data, len, off, *z, obj, referenced, f, user_data, limit);
|
1564
|
+
|
1565
|
+
switch(ret) {
|
1566
|
+
case UNPACK_SUCCESS:
|
1567
|
+
return unpacked(obj, msgpack::move(z));
|
1568
|
+
case UNPACK_EXTRA_BYTES:
|
1569
|
+
return unpacked(obj, msgpack::move(z));
|
1570
|
+
case UNPACK_CONTINUE:
|
1571
|
+
throw msgpack::insufficient_bytes("insufficient bytes");
|
1572
|
+
case UNPACK_PARSE_ERROR:
|
1573
|
+
default:
|
1574
|
+
throw msgpack::parse_error("parse error");
|
1575
|
+
}
|
1576
|
+
return unpacked();
|
343
1577
|
}
|
344
1578
|
|
345
|
-
|
346
|
-
|
1579
|
+
inline unpacked unpack(
|
1580
|
+
const char* data, std::size_t len, std::size_t& off,
|
1581
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
347
1582
|
{
|
348
|
-
|
1583
|
+
bool referenced;
|
1584
|
+
return unpack(data, len, off, referenced, f, user_data, limit);
|
1585
|
+
}
|
349
1586
|
|
350
|
-
|
351
|
-
|
352
|
-
|
1587
|
+
inline unpacked unpack(
|
1588
|
+
const char* data, std::size_t len, bool& referenced,
|
1589
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1590
|
+
{
|
1591
|
+
std::size_t off = 0;
|
1592
|
+
return unpack(data, len, off, referenced, f, user_data, limit);
|
1593
|
+
}
|
353
1594
|
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
1595
|
+
inline unpacked unpack(
|
1596
|
+
const char* data, std::size_t len,
|
1597
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1598
|
+
{
|
1599
|
+
bool referenced;
|
1600
|
+
std::size_t off = 0;
|
1601
|
+
return unpack(data, len, off, referenced, f, user_data, limit);
|
1602
|
+
}
|
360
1603
|
|
361
|
-
|
362
|
-
throw unpack_error("insufficient bytes");
|
1604
|
+
#endif // !defined(MSGPACK_USE_CPP03)
|
363
1605
|
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
1606
|
+
inline void unpack(unpacked& result,
|
1607
|
+
const char* data, std::size_t len, std::size_t& off, bool& referenced,
|
1608
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1609
|
+
{
|
1610
|
+
msgpack::object obj;
|
1611
|
+
msgpack::unique_ptr<msgpack::zone> z(new msgpack::zone);
|
1612
|
+
referenced = false;
|
1613
|
+
unpack_return ret = detail::unpack_imp(
|
1614
|
+
data, len, off, *z, obj, referenced, f, user_data, limit);
|
1615
|
+
|
1616
|
+
switch(ret) {
|
1617
|
+
case UNPACK_SUCCESS:
|
1618
|
+
result.set(obj);
|
1619
|
+
result.zone() = msgpack::move(z);
|
1620
|
+
return;
|
1621
|
+
case UNPACK_EXTRA_BYTES:
|
1622
|
+
result.set(obj);
|
1623
|
+
result.zone() = msgpack::move(z);
|
1624
|
+
return;
|
1625
|
+
case UNPACK_CONTINUE:
|
1626
|
+
throw msgpack::insufficient_bytes("insufficient bytes");
|
1627
|
+
case UNPACK_PARSE_ERROR:
|
1628
|
+
default:
|
1629
|
+
throw msgpack::parse_error("parse error");
|
1630
|
+
}
|
368
1631
|
}
|
369
1632
|
|
1633
|
+
inline void unpack(unpacked& result,
|
1634
|
+
const char* data, std::size_t len, std::size_t& off,
|
1635
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1636
|
+
{
|
1637
|
+
bool referenced;
|
1638
|
+
unpack(result, data, len, off, referenced, f, user_data, limit);
|
1639
|
+
}
|
1640
|
+
|
1641
|
+
inline void unpack(unpacked& result,
|
1642
|
+
const char* data, std::size_t len, bool& referenced,
|
1643
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1644
|
+
{
|
1645
|
+
std::size_t off = 0;
|
1646
|
+
unpack(result, data, len, off, referenced, f, user_data, limit);
|
1647
|
+
}
|
1648
|
+
|
1649
|
+
inline void unpack(unpacked& result,
|
1650
|
+
const char* data, std::size_t len,
|
1651
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1652
|
+
{
|
1653
|
+
bool referenced;
|
1654
|
+
std::size_t off = 0;
|
1655
|
+
unpack(result, data, len, off, referenced, f, user_data, limit);
|
1656
|
+
}
|
1657
|
+
|
1658
|
+
|
1659
|
+
inline msgpack::object unpack(
|
1660
|
+
msgpack::zone& z,
|
1661
|
+
const char* data, std::size_t len, std::size_t& off, bool& referenced,
|
1662
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1663
|
+
{
|
1664
|
+
msgpack::object obj;
|
1665
|
+
referenced = false;
|
1666
|
+
unpack_return ret = detail::unpack_imp(
|
1667
|
+
data, len, off, z, obj, referenced, f, user_data, limit);
|
1668
|
+
|
1669
|
+
switch(ret) {
|
1670
|
+
case UNPACK_SUCCESS:
|
1671
|
+
return obj;
|
1672
|
+
case UNPACK_EXTRA_BYTES:
|
1673
|
+
return obj;
|
1674
|
+
case UNPACK_CONTINUE:
|
1675
|
+
throw msgpack::insufficient_bytes("insufficient bytes");
|
1676
|
+
case UNPACK_PARSE_ERROR:
|
1677
|
+
default:
|
1678
|
+
throw msgpack::parse_error("parse error");
|
1679
|
+
}
|
1680
|
+
return obj;
|
1681
|
+
}
|
1682
|
+
|
1683
|
+
inline msgpack::object unpack(
|
1684
|
+
msgpack::zone& z,
|
1685
|
+
const char* data, std::size_t len, std::size_t& off,
|
1686
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1687
|
+
{
|
1688
|
+
bool referenced;
|
1689
|
+
return unpack(z, data, len, off, referenced, f, user_data, limit);
|
1690
|
+
}
|
1691
|
+
|
1692
|
+
inline msgpack::object unpack(
|
1693
|
+
msgpack::zone& z,
|
1694
|
+
const char* data, std::size_t len, bool& referenced,
|
1695
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1696
|
+
{
|
1697
|
+
std::size_t off = 0;
|
1698
|
+
return unpack(z, data, len, off, referenced, f, user_data, limit);
|
1699
|
+
}
|
1700
|
+
|
1701
|
+
inline msgpack::object unpack(
|
1702
|
+
msgpack::zone& z,
|
1703
|
+
const char* data, std::size_t len,
|
1704
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1705
|
+
{
|
1706
|
+
bool referenced;
|
1707
|
+
std::size_t off = 0;
|
1708
|
+
return unpack(z, data, len, off, referenced, f, user_data, limit);
|
1709
|
+
}
|
1710
|
+
|
1711
|
+
// obsolete
|
1712
|
+
// pointer version
|
1713
|
+
inline void unpack(unpacked* result,
|
1714
|
+
const char* data, std::size_t len, std::size_t* off, bool* referenced,
|
1715
|
+
unpack_reference_func f, void* user_data, unpack_limit const& limit)
|
1716
|
+
{
|
1717
|
+
if (off)
|
1718
|
+
if (referenced) unpack(*result, data, len, *off, *referenced, f, user_data, limit);
|
1719
|
+
else unpack(*result, data, len, *off, f, user_data, limit);
|
1720
|
+
else
|
1721
|
+
if (referenced) unpack(*result, data, len, *referenced, f, user_data, limit);
|
1722
|
+
else unpack(*result, data, len, f, user_data, limit);
|
1723
|
+
}
|
1724
|
+
|
1725
|
+
inline bool unpacker::default_reference_func(msgpack::type::object_type /*type*/, std::size_t /*len*/, void*)
|
1726
|
+
{
|
1727
|
+
return true;
|
1728
|
+
}
|
1729
|
+
|
1730
|
+
} // MSGPACK_API_VERSION_NAMESPACE(v1)
|
370
1731
|
|
371
1732
|
} // namespace msgpack
|
372
1733
|
|
373
|
-
#endif /* msgpack/unpack.hpp */
|
374
1734
|
|
1735
|
+
#endif /* msgpack/unpack.hpp */
|