libcouchbase 0.0.1
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 +7 -0
- data/.gitignore +18 -0
- data/.gitmodules +3 -0
- data/.rspec +1 -0
- data/.travis.yml +35 -0
- data/Gemfile +4 -0
- data/LICENSE +24 -0
- data/README.md +389 -0
- data/Rakefile +75 -0
- data/ext/README.md +6 -0
- data/ext/Rakefile +20 -0
- data/ext/libcouchbase/.gitignore +130 -0
- data/ext/libcouchbase/.travis.yml +19 -0
- data/ext/libcouchbase/CMakeLists.txt +429 -0
- data/ext/libcouchbase/CONTRIBUTING.md +124 -0
- data/ext/libcouchbase/LICENSE +202 -0
- data/ext/libcouchbase/README.markdown +163 -0
- data/ext/libcouchbase/RELEASE_NOTES.markdown +2691 -0
- data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +27 -0
- data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
- data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
- data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +20 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +52 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +56 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake +11 -0
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +29 -0
- data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +133 -0
- data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
- data/ext/libcouchbase/cmake/config-cmake.h.in +60 -0
- data/ext/libcouchbase/cmake/configure +357 -0
- data/ext/libcouchbase/cmake/defs.mk.in +8 -0
- data/ext/libcouchbase/cmake/dtrace-instr-link.pl +38 -0
- data/ext/libcouchbase/cmake/source_files.cmake +73 -0
- data/ext/libcouchbase/configure.pl +1 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.c +624 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
- data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +9 -0
- data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
- data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +217 -0
- data/ext/libcouchbase/contrib/cbsasl/src/client.c +205 -0
- data/ext/libcouchbase/contrib/cbsasl/src/common.c +46 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
- data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
- data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.c +747 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.h +493 -0
- data/ext/libcouchbase/contrib/genhash/genhash.c +372 -0
- data/ext/libcouchbase/contrib/genhash/genhash.h +235 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
- data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
- data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
- data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
- data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
- data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
- data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
- data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4892 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
- data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +8 -0
- data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
- data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
- data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
- data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
- data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +71 -0
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +98 -0
- data/ext/libcouchbase/contrib/snappy/snappy.cc +1307 -0
- data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
- data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
- data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
- data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
- data/ext/libcouchbase/example/CMakeLists.txt +37 -0
- data/ext/libcouchbase/example/README.markdown +47 -0
- data/ext/libcouchbase/example/db/db.c +167 -0
- data/ext/libcouchbase/example/db/vb.c +227 -0
- data/ext/libcouchbase/example/instancepool/main.cc +102 -0
- data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
- data/ext/libcouchbase/example/instancepool/pool.h +69 -0
- data/ext/libcouchbase/example/libeventdirect/main.c +148 -0
- data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
- data/ext/libcouchbase/example/minimal/minimal.c +130 -0
- data/ext/libcouchbase/example/observe/observe.c +146 -0
- data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +132 -0
- data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +191 -0
- data/ext/libcouchbase/example/tick/tick.c +119 -0
- data/ext/libcouchbase/example/views/views-example.cc +83 -0
- data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
- data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
- data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
- data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
- data/ext/libcouchbase/include/libcouchbase/cbft.h +109 -0
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +356 -0
- data/ext/libcouchbase/include/libcouchbase/cntl.h +937 -0
- data/ext/libcouchbase/include/libcouchbase/configuration.h.in +23 -0
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +3677 -0
- data/ext/libcouchbase/include/libcouchbase/deprecated.h +300 -0
- data/ext/libcouchbase/include/libcouchbase/error.h +595 -0
- data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
- data/ext/libcouchbase/include/libcouchbase/iops.h +1050 -0
- data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
- data/ext/libcouchbase/include/libcouchbase/kvbuf.h +132 -0
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +364 -0
- data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +367 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
- data/ext/libcouchbase/include/libcouchbase/subdoc.h +312 -0
- data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +643 -0
- data/ext/libcouchbase/include/libcouchbase/views.h +298 -0
- data/ext/libcouchbase/include/libcouchbase/visibility.h +65 -0
- data/ext/libcouchbase/include/memcached/COPYING +30 -0
- data/ext/libcouchbase/include/memcached/README +10 -0
- data/ext/libcouchbase/include/memcached/protocol_binary.h +1916 -0
- data/ext/libcouchbase/include/memcached/vbucket.h +42 -0
- data/ext/libcouchbase/packaging/README +7 -0
- data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
- data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
- data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
- data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
- data/ext/libcouchbase/packaging/deb/compat +1 -0
- data/ext/libcouchbase/packaging/deb/control +73 -0
- data/ext/libcouchbase/packaging/deb/copyright +10 -0
- data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
- data/ext/libcouchbase/packaging/deb/package.mk +31 -0
- data/ext/libcouchbase/packaging/deb/rules +46 -0
- data/ext/libcouchbase/packaging/deb/source/format +1 -0
- data/ext/libcouchbase/packaging/distinfo/README +1 -0
- data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
- data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
- data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
- data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
- data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
- data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +108 -0
- data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
- data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +466 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
- data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +29 -0
- data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +65 -0
- data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
- data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +29 -0
- data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
- data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
- data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +42 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +212 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +148 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +648 -0
- data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +11 -0
- data/ext/libcouchbase/plugins/io/select/plugin-select.c +448 -0
- data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
- data/ext/libcouchbase/src/README.md +103 -0
- data/ext/libcouchbase/src/aspend.h +106 -0
- data/ext/libcouchbase/src/auth.cc +74 -0
- data/ext/libcouchbase/src/auth.h +54 -0
- data/ext/libcouchbase/src/bootstrap.c +269 -0
- data/ext/libcouchbase/src/bootstrap.h +129 -0
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.c +495 -0
- data/ext/libcouchbase/src/bucketconfig/bc_file.c +347 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.c +630 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.h +82 -0
- data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +150 -0
- data/ext/libcouchbase/src/bucketconfig/clconfig.h +681 -0
- data/ext/libcouchbase/src/bucketconfig/confmon.c +474 -0
- data/ext/libcouchbase/src/callbacks.c +378 -0
- data/ext/libcouchbase/src/cbft.cc +210 -0
- data/ext/libcouchbase/src/cntl.cc +847 -0
- data/ext/libcouchbase/src/config_static.h +159 -0
- data/ext/libcouchbase/src/connspec.cc +462 -0
- data/ext/libcouchbase/src/connspec.h +105 -0
- data/ext/libcouchbase/src/ctx-log-inl.h +27 -0
- data/ext/libcouchbase/src/dump.c +98 -0
- data/ext/libcouchbase/src/getconfig.c +100 -0
- data/ext/libcouchbase/src/gethrtime.c +109 -0
- data/ext/libcouchbase/src/handler.c +922 -0
- data/ext/libcouchbase/src/hashset.c +164 -0
- data/ext/libcouchbase/src/hashset.h +86 -0
- data/ext/libcouchbase/src/hashtable.c +75 -0
- data/ext/libcouchbase/src/hdr_timings.c +92 -0
- data/ext/libcouchbase/src/hostlist.cc +301 -0
- data/ext/libcouchbase/src/hostlist.h +171 -0
- data/ext/libcouchbase/src/http/http-priv.h +307 -0
- data/ext/libcouchbase/src/http/http.cc +633 -0
- data/ext/libcouchbase/src/http/http.h +34 -0
- data/ext/libcouchbase/src/http/http_io.cc +307 -0
- data/ext/libcouchbase/src/instance.cc +722 -0
- data/ext/libcouchbase/src/internal.h +244 -0
- data/ext/libcouchbase/src/iofactory.c +575 -0
- data/ext/libcouchbase/src/jsparse/parser.cc +519 -0
- data/ext/libcouchbase/src/jsparse/parser.h +173 -0
- data/ext/libcouchbase/src/lcbht/lcbht.c +282 -0
- data/ext/libcouchbase/src/lcbht/lcbht.h +199 -0
- data/ext/libcouchbase/src/lcbio/connect.c +557 -0
- data/ext/libcouchbase/src/lcbio/connect.h +364 -0
- data/ext/libcouchbase/src/lcbio/ctx.c +611 -0
- data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
- data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
- data/ext/libcouchbase/src/lcbio/iotable.h +84 -0
- data/ext/libcouchbase/src/lcbio/ioutils.c +350 -0
- data/ext/libcouchbase/src/lcbio/ioutils.h +203 -0
- data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
- data/ext/libcouchbase/src/lcbio/manager.c +584 -0
- data/ext/libcouchbase/src/lcbio/manager.h +156 -0
- data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
- data/ext/libcouchbase/src/lcbio/rw-inl.h +115 -0
- data/ext/libcouchbase/src/lcbio/ssl.h +149 -0
- data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
- data/ext/libcouchbase/src/lcbio/timer.c +132 -0
- data/ext/libcouchbase/src/legacy.c +430 -0
- data/ext/libcouchbase/src/list.c +144 -0
- data/ext/libcouchbase/src/list.h +127 -0
- data/ext/libcouchbase/src/logging.c +244 -0
- data/ext/libcouchbase/src/logging.h +86 -0
- data/ext/libcouchbase/src/mc/compress.c +90 -0
- data/ext/libcouchbase/src/mc/compress.h +61 -0
- data/ext/libcouchbase/src/mc/forward.c +186 -0
- data/ext/libcouchbase/src/mc/forward.h +90 -0
- data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
- data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
- data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +111 -0
- data/ext/libcouchbase/src/mc/mcreq.c +954 -0
- data/ext/libcouchbase/src/mc/mcreq.h +977 -0
- data/ext/libcouchbase/src/mcserver/mcserver.c +784 -0
- data/ext/libcouchbase/src/mcserver/mcserver.h +121 -0
- data/ext/libcouchbase/src/mcserver/negotiate.c +656 -0
- data/ext/libcouchbase/src/mcserver/negotiate.h +119 -0
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +860 -0
- data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
- data/ext/libcouchbase/src/n1ql/n1ql.cc +729 -0
- data/ext/libcouchbase/src/n1ql/params.cc +215 -0
- data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
- data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
- data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
- data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
- data/ext/libcouchbase/src/newconfig.c +385 -0
- data/ext/libcouchbase/src/nodeinfo.cc +194 -0
- data/ext/libcouchbase/src/operations/cbflush.c +71 -0
- data/ext/libcouchbase/src/operations/counter.c +116 -0
- data/ext/libcouchbase/src/operations/durability-cas.c +224 -0
- data/ext/libcouchbase/src/operations/durability-seqno.c +157 -0
- data/ext/libcouchbase/src/operations/durability.c +668 -0
- data/ext/libcouchbase/src/operations/durability_internal.h +199 -0
- data/ext/libcouchbase/src/operations/get.c +409 -0
- data/ext/libcouchbase/src/operations/observe-seqno.c +96 -0
- data/ext/libcouchbase/src/operations/observe.c +340 -0
- data/ext/libcouchbase/src/operations/pktfwd.c +86 -0
- data/ext/libcouchbase/src/operations/remove.c +83 -0
- data/ext/libcouchbase/src/operations/stats.c +461 -0
- data/ext/libcouchbase/src/operations/store.c +360 -0
- data/ext/libcouchbase/src/operations/subdoc.cc +510 -0
- data/ext/libcouchbase/src/operations/touch.c +81 -0
- data/ext/libcouchbase/src/packetutils.c +60 -0
- data/ext/libcouchbase/src/packetutils.h +147 -0
- data/ext/libcouchbase/src/probes.d +211 -0
- data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
- data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
- data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
- data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
- data/ext/libcouchbase/src/rdb/rope.c +419 -0
- data/ext/libcouchbase/src/rdb/rope.h +488 -0
- data/ext/libcouchbase/src/retrychk.c +113 -0
- data/ext/libcouchbase/src/retryq.c +424 -0
- data/ext/libcouchbase/src/retryq.h +157 -0
- data/ext/libcouchbase/src/ringbuffer.c +442 -0
- data/ext/libcouchbase/src/ringbuffer.h +100 -0
- data/ext/libcouchbase/src/settings.c +95 -0
- data/ext/libcouchbase/src/settings.h +188 -0
- data/ext/libcouchbase/src/simplestring.c +211 -0
- data/ext/libcouchbase/src/simplestring.h +228 -0
- data/ext/libcouchbase/src/sllist-inl.h +197 -0
- data/ext/libcouchbase/src/sllist.h +76 -0
- data/ext/libcouchbase/src/ssl/CMakeLists.txt +23 -0
- data/ext/libcouchbase/src/ssl/ssl_c.c +415 -0
- data/ext/libcouchbase/src/ssl/ssl_common.c +454 -0
- data/ext/libcouchbase/src/ssl/ssl_e.c +408 -0
- data/ext/libcouchbase/src/ssl/ssl_iot_common.h +180 -0
- data/ext/libcouchbase/src/ssobuf.h +82 -0
- data/ext/libcouchbase/src/strcodecs/base64.c +123 -0
- data/ext/libcouchbase/src/strcodecs/strcodecs.h +285 -0
- data/ext/libcouchbase/src/timings.c +208 -0
- data/ext/libcouchbase/src/trace.h +105 -0
- data/ext/libcouchbase/src/utilities.c +171 -0
- data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
- data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
- data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
- data/ext/libcouchbase/src/vbucket/hash.h +30 -0
- data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
- data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
- data/ext/libcouchbase/src/vbucket/vbucket.c +1543 -0
- data/ext/libcouchbase/src/views/docreq.c +194 -0
- data/ext/libcouchbase/src/views/docreq.h +83 -0
- data/ext/libcouchbase/src/views/viewreq.c +358 -0
- data/ext/libcouchbase/src/views/viewreq.h +36 -0
- data/ext/libcouchbase/src/wait.c +161 -0
- data/ext/libcouchbase/tests/CMakeLists.txt +140 -0
- data/ext/libcouchbase/tests/basic/t_base64.cc +81 -0
- data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
- data/ext/libcouchbase/tests/basic/t_connstr.cc +404 -0
- data/ext/libcouchbase/tests/basic/t_creds.cc +32 -0
- data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
- data/ext/libcouchbase/tests/basic/t_hashset.cc +262 -0
- data/ext/libcouchbase/tests/basic/t_host.cc +198 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.cc +137 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
- data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
- data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
- data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
- data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +18 -0
- data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
- data/ext/libcouchbase/tests/basic/t_packet.cc +222 -0
- data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
- data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
- data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
- data/ext/libcouchbase/tests/basic/t_string.cc +112 -0
- data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
- data/ext/libcouchbase/tests/check-all.cc +608 -0
- data/ext/libcouchbase/tests/htparse/t_basic.cc +193 -0
- data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
- data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
- data/ext/libcouchbase/tests/ioserver/ioserver.cc +104 -0
- data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
- data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
- data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
- data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
- data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
- data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
- data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.cc +524 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.h +385 -0
- data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
- data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
- data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
- data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
- data/ext/libcouchbase/tests/iotests/t_behavior.cc +226 -0
- data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
- data/ext/libcouchbase/tests/iotests/t_confmon.cc +241 -0
- data/ext/libcouchbase/tests/iotests/t_durability.cc +1059 -0
- data/ext/libcouchbase/tests/iotests/t_forward.cc +110 -0
- data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
- data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
- data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
- data/ext/libcouchbase/tests/iotests/t_lock.cc +275 -0
- data/ext/libcouchbase/tests/iotests/t_misc.cc +713 -0
- data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
- data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
- data/ext/libcouchbase/tests/iotests/t_netfail.cc +654 -0
- data/ext/libcouchbase/tests/iotests/t_obseqno.cc +157 -0
- data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
- data/ext/libcouchbase/tests/iotests/t_sched.cc +88 -0
- data/ext/libcouchbase/tests/iotests/t_serverops.cc +230 -0
- data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
- data/ext/libcouchbase/tests/iotests/t_subdoc.cc +822 -0
- data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
- data/ext/libcouchbase/tests/iotests/t_views.cc +405 -0
- data/ext/libcouchbase/tests/iotests/testutil.cc +250 -0
- data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
- data/ext/libcouchbase/tests/mc/mctest.h +119 -0
- data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
- data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
- data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
- data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
- data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
- data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
- data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
- data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
- data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
- data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
- data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
- data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
- data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
- data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
- data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
- data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
- data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
- data/ext/libcouchbase/tests/socktests/socktest.cc +347 -0
- data/ext/libcouchbase/tests/socktests/socktest.h +448 -0
- data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
- data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
- data/ext/libcouchbase/tests/socktests/t_manager.cc +179 -0
- data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
- data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
- data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
- data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
- data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
- data/ext/libcouchbase/tests/start_mock.bat +15 -0
- data/ext/libcouchbase/tests/start_mock.sh +42 -0
- data/ext/libcouchbase/tests/unit_tests.cc +43 -0
- data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
- data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/t_config.cc +341 -0
- data/ext/libcouchbase/tools/CMakeLists.txt +51 -0
- data/ext/libcouchbase/tools/cbc-handlers.h +462 -0
- data/ext/libcouchbase/tools/cbc-n1qlback.cc +439 -0
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +822 -0
- data/ext/libcouchbase/tools/cbc.cc +1541 -0
- data/ext/libcouchbase/tools/common/histogram.cc +43 -0
- data/ext/libcouchbase/tools/common/histogram.h +23 -0
- data/ext/libcouchbase/tools/common/my_inttypes.h +22 -0
- data/ext/libcouchbase/tools/common/options.cc +420 -0
- data/ext/libcouchbase/tools/common/options.h +81 -0
- data/ext/libcouchbase/tools/docgen/docgen.h +469 -0
- data/ext/libcouchbase/tools/docgen/loc.h +210 -0
- data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
- data/ext/libcouchbase/tools/docgen/seqgen.h +94 -0
- data/lib/libcouchbase.rb +36 -0
- data/lib/libcouchbase/bucket.rb +819 -0
- data/lib/libcouchbase/callbacks.rb +72 -0
- data/lib/libcouchbase/connection.rb +790 -0
- data/lib/libcouchbase/design_docs.rb +86 -0
- data/lib/libcouchbase/error.rb +68 -0
- data/lib/libcouchbase/ext/libcouchbase.rb +1135 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdbase.rb +23 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdcounter.rb +36 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdendure.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdfts.rb +24 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdget.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdgetreplica.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdhttp.rb +58 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdn1ql.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdobseqno.rb +33 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdobserve.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdstore.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdstoredur.rb +45 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdsubdoc.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdverbosity.rb +29 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdviewquery.rb +61 -0
- data/lib/libcouchbase/ext/libcouchbase/contigbuf.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st.rb +15 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st0.rb +23 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st1.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st2.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st3.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/crst_u.rb +20 -0
- data/lib/libcouchbase/ext/libcouchbase/durability_opts_st_v.rb +11 -0
- data/lib/libcouchbase/ext/libcouchbase/durability_opts_t.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/durabilityopt_sv0.rb +63 -0
- data/lib/libcouchbase/ext/libcouchbase/enums.rb +991 -0
- data/lib/libcouchbase/ext/libcouchbase/fragbuf.rb +18 -0
- data/lib/libcouchbase/ext/libcouchbase/ftshandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/histogram.rb +34 -0
- data/lib/libcouchbase/ext/libcouchbase/http_request_t.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/keybuf.rb +20 -0
- data/lib/libcouchbase/ext/libcouchbase/multicmd_ctx.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/mutation_token.rb +17 -0
- data/lib/libcouchbase/ext/libcouchbase/n1qlhandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/n1qlparams.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/respbase.rb +29 -0
- data/lib/libcouchbase/ext/libcouchbase/respcounter.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respendure.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/respfts.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/respget.rb +44 -0
- data/lib/libcouchbase/ext/libcouchbase/resphttp.rb +48 -0
- data/lib/libcouchbase/ext/libcouchbase/respmcversion.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respn1ql.rb +41 -0
- data/lib/libcouchbase/ext/libcouchbase/respobseqno.rb +52 -0
- data/lib/libcouchbase/ext/libcouchbase/respobserve.rb +41 -0
- data/lib/libcouchbase/ext/libcouchbase/respserverbase.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respstats.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respstore.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respstoredur.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respsubdoc.rb +35 -0
- data/lib/libcouchbase/ext/libcouchbase/respviewquery.rb +67 -0
- data/lib/libcouchbase/ext/libcouchbase/sdentry.rb +22 -0
- data/lib/libcouchbase/ext/libcouchbase/sdspec.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/t.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/valbuf.rb +22 -0
- data/lib/libcouchbase/ext/libcouchbase/valbuf_u_buf.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/viewhandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase_iocp.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase_libuv.rb +18 -0
- data/lib/libcouchbase/ext/tasks.rb +87 -0
- data/lib/libcouchbase/n1ql.rb +73 -0
- data/lib/libcouchbase/query_full_text.rb +147 -0
- data/lib/libcouchbase/query_n1ql.rb +121 -0
- data/lib/libcouchbase/query_view.rb +129 -0
- data/lib/libcouchbase/results_fiber.rb +262 -0
- data/lib/libcouchbase/results_native.rb +211 -0
- data/lib/libcouchbase/version.rb +5 -0
- data/libcouchbase.gemspec +61 -0
- data/spec/bucket_spec.rb +270 -0
- data/spec/connection_spec.rb +277 -0
- data/spec/design_docs_spec.rb +23 -0
- data/spec/error_spec.rb +26 -0
- data/spec/fts_spec.rb +129 -0
- data/spec/n1ql_spec.rb +201 -0
- data/spec/results_libuv_spec.rb +229 -0
- data/spec/results_native_spec.rb +259 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
- data/spec/view_spec.rb +195 -0
- metadata +775 -0
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
#ifndef CLIOPTS_H_
|
|
2
|
+
#define CLIOPTS_H_
|
|
3
|
+
|
|
4
|
+
#include <stddef.h> /* size_t */
|
|
5
|
+
|
|
6
|
+
#ifdef __cplusplus
|
|
7
|
+
extern "C" {
|
|
8
|
+
#endif /* __cplusplus */
|
|
9
|
+
|
|
10
|
+
#if defined(_WIN32) && defined(CLIOPTS_BUILDING_DLL)
|
|
11
|
+
#define CLIOPTS_API __declspec( dllexport )
|
|
12
|
+
|
|
13
|
+
#else
|
|
14
|
+
#define CLIOPTS_API
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Various option types
|
|
20
|
+
*/
|
|
21
|
+
typedef enum {
|
|
22
|
+
/** takes no argument, dest should be anything big enough to hold a boolean*/
|
|
23
|
+
CLIOPTS_ARGT_NONE,
|
|
24
|
+
|
|
25
|
+
/** simple int type, dest should be an 'int' */
|
|
26
|
+
CLIOPTS_ARGT_INT,
|
|
27
|
+
|
|
28
|
+
/** dest should be an unsigned int */
|
|
29
|
+
CLIOPTS_ARGT_UINT,
|
|
30
|
+
|
|
31
|
+
/** dest should be an unsigned int, but command line format is hex */
|
|
32
|
+
CLIOPTS_ARGT_HEX,
|
|
33
|
+
|
|
34
|
+
/** dest should be a char**. Note that the string is allocated, so you should
|
|
35
|
+
* free() it when done */
|
|
36
|
+
CLIOPTS_ARGT_STRING,
|
|
37
|
+
|
|
38
|
+
/** dest should be a float* */
|
|
39
|
+
CLIOPTS_ARGT_FLOAT,
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Destination should be cliopts_list. Argument type is assumed to be a
|
|
43
|
+
* string. You can use this option type to build -Doption=value style
|
|
44
|
+
* options which can be processed later on.
|
|
45
|
+
*/
|
|
46
|
+
CLIOPTS_ARGT_LIST
|
|
47
|
+
} cliopts_argtype_t;
|
|
48
|
+
|
|
49
|
+
typedef struct {
|
|
50
|
+
/**
|
|
51
|
+
* Input parameters
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
/** Short option, i.e. -v (0 for none) */
|
|
55
|
+
char kshort;
|
|
56
|
+
|
|
57
|
+
/** long option, i.e. --verbose, NULL for none */
|
|
58
|
+
const char *klong;
|
|
59
|
+
|
|
60
|
+
/** type of value */
|
|
61
|
+
cliopts_argtype_t ktype;
|
|
62
|
+
|
|
63
|
+
/** destination pointer for value */
|
|
64
|
+
void *dest;
|
|
65
|
+
|
|
66
|
+
/** help string for this option */
|
|
67
|
+
const char *help;
|
|
68
|
+
|
|
69
|
+
/** description of the value, e.g. --file=FILE */
|
|
70
|
+
const char *vdesc;
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
/** set this to true if the user must provide this option */
|
|
74
|
+
int required;
|
|
75
|
+
|
|
76
|
+
/** set this to true to disable showing the option in the help text */
|
|
77
|
+
int hidden;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Output parameters
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
/** whether this option was encountered on the command line */
|
|
84
|
+
int found;
|
|
85
|
+
|
|
86
|
+
} cliopts_entry;
|
|
87
|
+
|
|
88
|
+
struct cliopts_extra_settings {
|
|
89
|
+
/** Assume actual arguments start from argv[0], not argv[1] */
|
|
90
|
+
int argv_noskip;
|
|
91
|
+
/** Don't exit on error */
|
|
92
|
+
int error_noexit;
|
|
93
|
+
/** Don't print help on error */
|
|
94
|
+
int error_nohelp;
|
|
95
|
+
/** Don't interpret --help or -? as help flags */
|
|
96
|
+
int help_noflag;
|
|
97
|
+
/** Program name (defaults to argv[0]) */
|
|
98
|
+
const char *progname;
|
|
99
|
+
/** Usage string (defaults to "[OPTIONS..]") */
|
|
100
|
+
const char *argstring;
|
|
101
|
+
/** Short description (empty by default) */
|
|
102
|
+
const char *shortdesc;
|
|
103
|
+
/** Print default values as well */
|
|
104
|
+
int show_defaults;
|
|
105
|
+
/**
|
|
106
|
+
* Maximum length of a line when printing help. This may be detected
|
|
107
|
+
* using the $COLUMNS environment variable
|
|
108
|
+
*/
|
|
109
|
+
int line_max;
|
|
110
|
+
|
|
111
|
+
/** Positional parameters (if found). If this array is non-NULL on input
|
|
112
|
+
* then parameters which are not recognized will be placed here. Otherwise
|
|
113
|
+
* the parser will return with an error. This array must be large enough
|
|
114
|
+
* to contain `argc` count strings.
|
|
115
|
+
*/
|
|
116
|
+
const char **restargs;
|
|
117
|
+
|
|
118
|
+
/** Number of positional parameters (if found) */
|
|
119
|
+
unsigned nrestargs;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
typedef struct {
|
|
123
|
+
/** Array of string pointers. Allocated via standard malloc functions */
|
|
124
|
+
char **values;
|
|
125
|
+
/** Number of valid entries */
|
|
126
|
+
size_t nvalues;
|
|
127
|
+
/** Number of entries allocated */
|
|
128
|
+
size_t nalloc;
|
|
129
|
+
} cliopts_list;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Clear a list of its contents
|
|
133
|
+
* @param l The list
|
|
134
|
+
*/
|
|
135
|
+
CLIOPTS_API
|
|
136
|
+
void
|
|
137
|
+
cliopts_list_clear(cliopts_list *l);
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Parse options.
|
|
141
|
+
*
|
|
142
|
+
* @param entries an array of cliopts_entry structures. The list should be
|
|
143
|
+
* terminated with a structure which has its dest field set to NULL
|
|
144
|
+
*
|
|
145
|
+
* @param argc the count of arguments
|
|
146
|
+
* @param argv the actual list of arguments
|
|
147
|
+
* @param lastidx populated with the amount of elements from argv actually read
|
|
148
|
+
* @params setting a structure defining extra settings for the argument parser.
|
|
149
|
+
* May be NULL
|
|
150
|
+
*
|
|
151
|
+
* @return 0 for success, -1 on error.
|
|
152
|
+
*/
|
|
153
|
+
CLIOPTS_API
|
|
154
|
+
int
|
|
155
|
+
cliopts_parse_options(cliopts_entry *entries,
|
|
156
|
+
int argc,
|
|
157
|
+
char **argv,
|
|
158
|
+
int *lastidx,
|
|
159
|
+
struct cliopts_extra_settings *settings);
|
|
160
|
+
#ifdef __cplusplus
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
#ifdef CLIOPTS_ENABLE_CXX
|
|
164
|
+
#include <string>
|
|
165
|
+
#include <vector>
|
|
166
|
+
#include <list>
|
|
167
|
+
#include <cstdlib>
|
|
168
|
+
#include <cstring>
|
|
169
|
+
#include <cstdio>
|
|
170
|
+
|
|
171
|
+
namespace cliopts {
|
|
172
|
+
class Parser;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* This class should typically not be used directly. It is a simple wrapper
|
|
176
|
+
* around the C-based ::cliopts_entry class for further wrapping by the
|
|
177
|
+
* cliopts::TOption template class.
|
|
178
|
+
*/
|
|
179
|
+
class Option : protected cliopts_entry {
|
|
180
|
+
public:
|
|
181
|
+
bool passed() const { return found != 0; }
|
|
182
|
+
void setPassed(bool val = true) { found = val ? 1 : 0; }
|
|
183
|
+
int numSpecified() const { return found; }
|
|
184
|
+
Option() { memset(this, 0, sizeof (cliopts_entry)); }
|
|
185
|
+
private:
|
|
186
|
+
friend class Parser;
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
class EmptyPriv {};
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Option template class. This class is not meant to be used by applications
|
|
193
|
+
* directly. Applications should use one of the template instantiations
|
|
194
|
+
* below (e.g. cliopts::StringOption)
|
|
195
|
+
*
|
|
196
|
+
* @param T type returned to the application
|
|
197
|
+
* @param Targ integer constant indicating the type of the C argument
|
|
198
|
+
* @param Taccum raw destination type which will store the parsed value
|
|
199
|
+
* @param Tpriv type of private data to be stored for type-specific processing
|
|
200
|
+
*/
|
|
201
|
+
template <
|
|
202
|
+
typename T,
|
|
203
|
+
cliopts_argtype_t Targ,
|
|
204
|
+
typename Taccum,
|
|
205
|
+
typename Tpriv = EmptyPriv
|
|
206
|
+
>
|
|
207
|
+
class TOption : public Option {
|
|
208
|
+
|
|
209
|
+
private:
|
|
210
|
+
typedef TOption<T,Targ, Taccum, Tpriv> Ttype;
|
|
211
|
+
Taccum innerVal; /**< Pointer for cliopts_entry destination */
|
|
212
|
+
Tpriv priv; /**< Type-specific data */
|
|
213
|
+
public:
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Construct a new option
|
|
217
|
+
* @param shortname abbreviated short name
|
|
218
|
+
* @param longname long ("GNU-style" name)
|
|
219
|
+
* @param deflval default value to be used
|
|
220
|
+
* @param helpstr Text explaining the option
|
|
221
|
+
*/
|
|
222
|
+
TOption(char shortname, const char *longname = NULL,
|
|
223
|
+
T deflval = createDefault(), const char *helpstr = NULL) {
|
|
224
|
+
|
|
225
|
+
memset((cliopts_entry *)this, 0, sizeof(cliopts_entry));
|
|
226
|
+
ktype = Targ;
|
|
227
|
+
klong = longname;
|
|
228
|
+
dest = &innerVal;
|
|
229
|
+
|
|
230
|
+
abbrev(shortname);
|
|
231
|
+
description(helpstr);
|
|
232
|
+
setDefault(deflval);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Construct a new option
|
|
237
|
+
* @param longname the long ("GNU-Style") name.
|
|
238
|
+
*/
|
|
239
|
+
TOption(const char *longname) {
|
|
240
|
+
memset((cliopts_entry *)this, 0, sizeof(cliopts_entry));
|
|
241
|
+
ktype = Targ;
|
|
242
|
+
klong = longname;
|
|
243
|
+
innerVal = createDefault();
|
|
244
|
+
dest = &innerVal;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Copy constructor. This mainly exists to allow chaining (See example)
|
|
249
|
+
* @param other the source option to copy
|
|
250
|
+
*/
|
|
251
|
+
TOption(TOption& other) {
|
|
252
|
+
*(cliopts_entry*)this = *(cliopts_entry*) &other;
|
|
253
|
+
innerVal = other.innerVal;
|
|
254
|
+
dest = &innerVal;
|
|
255
|
+
other.dest = NULL;
|
|
256
|
+
doCopy(other);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Set the default value for the option
|
|
261
|
+
* @param val the default value
|
|
262
|
+
* @return the option object, for method chaining.
|
|
263
|
+
*/
|
|
264
|
+
inline Ttype& setDefault(const T& val) {
|
|
265
|
+
innerVal = val;
|
|
266
|
+
return *this;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Set the single-character switch
|
|
271
|
+
* @param val the switch character, e.g. '-v'
|
|
272
|
+
* @return the option object, for method chaining
|
|
273
|
+
*/
|
|
274
|
+
inline Ttype& abbrev(char val) { kshort = val; return *this; }
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Set the description (or help string) for the option.
|
|
278
|
+
* @param msg The help string e.g. "Increases verbosity"
|
|
279
|
+
* @return the obtion object, for method chaining.
|
|
280
|
+
*/
|
|
281
|
+
inline Ttype& description(const char *msg) { help = msg; return *this; }
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Set whether this option must appear
|
|
285
|
+
* @param val boolean, set to true if required, false if optional
|
|
286
|
+
* @return the option object, for method chaining
|
|
287
|
+
*/
|
|
288
|
+
inline Ttype& mandatory(bool val = true) { required = val; return *this; }
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Set the value description string for the option value.
|
|
292
|
+
* @param desc The short description string, e.g. "RETRIES"
|
|
293
|
+
* @return the option object, for method chaining
|
|
294
|
+
*/
|
|
295
|
+
inline Ttype& argdesc(const char *desc) { vdesc = desc; return *this; }
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Whether to hide this option in the help output
|
|
299
|
+
* @param val true if the option should be hidden
|
|
300
|
+
* @return the object object, for method chaining.
|
|
301
|
+
*/
|
|
302
|
+
inline Ttype& hide(bool val = true) { hidden = val; return *this; }
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Returns the result object
|
|
306
|
+
* @return a copy of the result object
|
|
307
|
+
*/
|
|
308
|
+
inline T result() { return (T)innerVal; }
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Returns a reference to the result object
|
|
312
|
+
* @return a reference to the result object.
|
|
313
|
+
*/
|
|
314
|
+
inline T& const_result() { return (T)innerVal; }
|
|
315
|
+
|
|
316
|
+
operator T() { return result(); }
|
|
317
|
+
|
|
318
|
+
protected:
|
|
319
|
+
/** Called from within copy constructor */
|
|
320
|
+
inline void doCopy(TOption&) {}
|
|
321
|
+
|
|
322
|
+
/** Create the default value for the option */
|
|
323
|
+
static inline Taccum createDefault() { return Taccum(); }
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
typedef TOption<std::string,
|
|
327
|
+
CLIOPTS_ARGT_STRING,
|
|
328
|
+
const char*,
|
|
329
|
+
std::string> StringOption;
|
|
330
|
+
|
|
331
|
+
typedef TOption<std::vector<std::string>,
|
|
332
|
+
CLIOPTS_ARGT_LIST,
|
|
333
|
+
cliopts_list,
|
|
334
|
+
std::vector<std::string> > ListOption;
|
|
335
|
+
|
|
336
|
+
typedef TOption<bool,
|
|
337
|
+
CLIOPTS_ARGT_NONE,
|
|
338
|
+
int> BoolOption;
|
|
339
|
+
|
|
340
|
+
typedef TOption<unsigned,
|
|
341
|
+
CLIOPTS_ARGT_UINT,
|
|
342
|
+
unsigned> UIntOption;
|
|
343
|
+
|
|
344
|
+
typedef TOption<int,
|
|
345
|
+
CLIOPTS_ARGT_INT,
|
|
346
|
+
int> IntOption;
|
|
347
|
+
|
|
348
|
+
typedef TOption<int,
|
|
349
|
+
CLIOPTS_ARGT_HEX,
|
|
350
|
+
unsigned> HexOption;
|
|
351
|
+
|
|
352
|
+
typedef TOption<float,
|
|
353
|
+
CLIOPTS_ARGT_FLOAT,
|
|
354
|
+
float> FloatOption;
|
|
355
|
+
|
|
356
|
+
// STRING ROUTINES
|
|
357
|
+
template<> inline std::string& StringOption::const_result() {
|
|
358
|
+
if (innerVal && passed()) {
|
|
359
|
+
priv = innerVal;
|
|
360
|
+
}
|
|
361
|
+
return priv;
|
|
362
|
+
}
|
|
363
|
+
template<> inline std::string StringOption::result() {
|
|
364
|
+
return const_result();
|
|
365
|
+
}
|
|
366
|
+
template<> inline StringOption& StringOption::setDefault(const std::string& s) {
|
|
367
|
+
priv = s;
|
|
368
|
+
innerVal = priv.c_str();
|
|
369
|
+
return *this;
|
|
370
|
+
}
|
|
371
|
+
template<> inline void StringOption::doCopy(StringOption& other) {
|
|
372
|
+
priv = other.priv;
|
|
373
|
+
if (other.innerVal == other.priv.c_str()) {
|
|
374
|
+
innerVal = priv.c_str();
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
template<> inline const char* StringOption::createDefault() { return NULL; }
|
|
378
|
+
|
|
379
|
+
// LIST ROUTINES
|
|
380
|
+
template<> inline std::vector<std::string>& ListOption::const_result() {
|
|
381
|
+
if (priv.empty()) {
|
|
382
|
+
for (size_t ii = 0; ii < innerVal.nvalues; ii++) {
|
|
383
|
+
priv.push_back(innerVal.values[ii]);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return priv;
|
|
387
|
+
}
|
|
388
|
+
template<> inline std::vector<std::string> ListOption::result() {
|
|
389
|
+
return const_result();
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// BOOL ROUTINES
|
|
393
|
+
template<> inline BoolOption& BoolOption::setDefault(const bool& b) {
|
|
394
|
+
innerVal = b ? 1 : 0; return *this;
|
|
395
|
+
}
|
|
396
|
+
template<> inline bool BoolOption::result() {
|
|
397
|
+
return innerVal != 0 ? true : false;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Parser class which contains one or more cliopts::Option objects. Options
|
|
402
|
+
* should be added via the #addOption() member function.
|
|
403
|
+
*/
|
|
404
|
+
class Parser {
|
|
405
|
+
public:
|
|
406
|
+
/**
|
|
407
|
+
* Construct a new parser
|
|
408
|
+
* @param name the "program name" which is printed at the top of the
|
|
409
|
+
* help message.
|
|
410
|
+
*/
|
|
411
|
+
Parser(const char *name = NULL) {
|
|
412
|
+
memset(&default_settings, 0, sizeof default_settings);
|
|
413
|
+
default_settings.progname = name;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Adds an option to the parser. The option is then checked for presence
|
|
418
|
+
* on the commandline (in #parse()).
|
|
419
|
+
* @param opt the option to add. Note that the application is responsible
|
|
420
|
+
* for keeping the option in valid memory.
|
|
421
|
+
*/
|
|
422
|
+
void addOption(Option *opt) { options.push_back(opt); }
|
|
423
|
+
|
|
424
|
+
void addOption(Option& opt) { options.push_back(&opt); }
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Parses the options from the commandline
|
|
428
|
+
* @param argc number of arguments
|
|
429
|
+
* @param argv list of arguments
|
|
430
|
+
* @param standalone_args whether to accept (and store) positional arguments
|
|
431
|
+
* (after all named options are processed).
|
|
432
|
+
* @return true on parse success, false on parse failure
|
|
433
|
+
*/
|
|
434
|
+
bool parse(int argc, char **argv, bool standalone_args = false) {
|
|
435
|
+
std::vector<cliopts_entry> ents;
|
|
436
|
+
cliopts_extra_settings settings = default_settings;
|
|
437
|
+
int lastix;
|
|
438
|
+
|
|
439
|
+
for (unsigned ii = 0; ii < options.size(); ++ii) {
|
|
440
|
+
ents.push_back(*options[ii]);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
if (ents.empty()) { return false; }
|
|
444
|
+
ents.push_back(Option());
|
|
445
|
+
const char **tmpargs = NULL;
|
|
446
|
+
if (standalone_args) {
|
|
447
|
+
tmpargs = new const char*[argc];
|
|
448
|
+
settings.restargs = tmpargs;
|
|
449
|
+
settings.nrestargs = 0;
|
|
450
|
+
}
|
|
451
|
+
settings.show_defaults = 1;
|
|
452
|
+
|
|
453
|
+
int rv = cliopts_parse_options(&ents[0], argc, argv, &lastix, &settings);
|
|
454
|
+
|
|
455
|
+
if (tmpargs != NULL) {
|
|
456
|
+
for (unsigned ii = 0; ii < settings.nrestargs; ii++) {
|
|
457
|
+
restargs.push_back(tmpargs[ii]);
|
|
458
|
+
}
|
|
459
|
+
delete[] tmpargs;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// Copy the options back
|
|
463
|
+
for (unsigned ii = 0; ii < options.size(); ii++) {
|
|
464
|
+
*(cliopts_entry *)options[ii] = ents[ii];
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
if (rv == 0 && lastix != 0) {
|
|
468
|
+
for (; lastix < argc; lastix++) {
|
|
469
|
+
restargs.push_back(argv[lastix]);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
return rv == 0;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Get the list of any positional arguments found on the commandline
|
|
478
|
+
* @return A list of positional arguments found.
|
|
479
|
+
*/
|
|
480
|
+
const std::vector<std::string>& getRestArgs() { return restargs; }
|
|
481
|
+
|
|
482
|
+
cliopts_extra_settings default_settings;
|
|
483
|
+
private:
|
|
484
|
+
std::vector<Option*> options;
|
|
485
|
+
std::vector<std::string> restargs;
|
|
486
|
+
Parser(Parser&);
|
|
487
|
+
};
|
|
488
|
+
} // namespace
|
|
489
|
+
#endif /* CLIOPTS_ENABLE_CXX */
|
|
490
|
+
|
|
491
|
+
#endif /* __cplusplus */
|
|
492
|
+
|
|
493
|
+
#endif /* CLIOPTS_H_ */
|