Copy disabled (too large)
Download .txt
Showing preview only (18,269K chars total). Download the full file to get everything.
Repository: sugarchain-project/sugarchain
Branch: master-v0.16.3
Commit: 8db2b95e10e9
Files: 1347
Total size: 16.8 MB
Directory structure:
gitextract_j7k39exp/
├── .gitattributes
├── .gitignore
├── .travis.yml
├── .tx/
│ └── config
├── CONTRIBUTING.md
├── COPYING
├── INSTALL.md
├── Makefile.am
├── README.md
├── autogen.sh
├── build-aux/
│ └── m4/
│ ├── ax_boost_base.m4
│ ├── ax_boost_chrono.m4
│ ├── ax_boost_filesystem.m4
│ ├── ax_boost_program_options.m4
│ ├── ax_boost_system.m4
│ ├── ax_boost_thread.m4
│ ├── ax_boost_unit_test_framework.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_check_link_flag.m4
│ ├── ax_check_preproc_flag.m4
│ ├── ax_cxx_compile_stdcxx.m4
│ ├── ax_gcc_func_attribute.m4
│ ├── ax_pthread.m4
│ ├── bitcoin_find_bdb48.m4
│ ├── bitcoin_qt.m4
│ ├── bitcoin_subdir_to_include.m4
│ └── l_atomic.m4
├── configure.ac
├── contrib/
│ ├── README.md
│ ├── bitcoin-cli.bash-completion
│ ├── bitcoin-qt.pro
│ ├── bitcoin-tx.bash-completion
│ ├── bitcoind.bash-completion
│ ├── debian/
│ │ ├── README.md
│ │ ├── bitcoin-qt.desktop
│ │ ├── bitcoin-qt.install
│ │ ├── bitcoin-qt.lintian-overrides
│ │ ├── bitcoin-qt.manpages
│ │ ├── bitcoin-qt.protocol
│ │ ├── bitcoin-tx.bash-completion
│ │ ├── bitcoin-tx.install
│ │ ├── bitcoin-tx.manpages
│ │ ├── bitcoind.bash-completion
│ │ ├── bitcoind.examples
│ │ ├── bitcoind.install
│ │ ├── bitcoind.lintian-overrides
│ │ ├── bitcoind.manpages
│ │ ├── changelog
│ │ ├── compat
│ │ ├── control
│ │ ├── copyright
│ │ ├── examples/
│ │ │ └── bitcoin.conf
│ │ ├── gbp.conf
│ │ ├── patches/
│ │ │ ├── README
│ │ │ └── series
│ │ ├── rules
│ │ ├── source/
│ │ │ └── format
│ │ └── watch
│ ├── devtools/
│ │ ├── README.md
│ │ ├── check-doc.py
│ │ ├── check-rpc-mappings.py
│ │ ├── clang-format-diff.py
│ │ ├── commit-script-check.sh
│ │ ├── copyright_header.py
│ │ ├── gen-manpages.sh
│ │ ├── git-subtree-check.sh
│ │ ├── github-merge.py
│ │ ├── lint-all.sh
│ │ ├── lint-python.sh
│ │ ├── lint-whitespace.sh
│ │ ├── optimize-pngs.py
│ │ ├── security-check.py
│ │ ├── split-debug.sh.in
│ │ ├── symbol-check.py
│ │ ├── test-security-check.py
│ │ └── update-translations.py
│ ├── filter-lcov.py
│ ├── gitian-build.sh
│ ├── gitian-descriptors/
│ │ ├── gitian-linux.yml
│ │ ├── gitian-osx-signer.yml
│ │ ├── gitian-osx.yml
│ │ ├── gitian-win-signer.yml
│ │ └── gitian-win.yml
│ ├── gitian-keys/
│ │ ├── Ghrog-pubkey.asc
│ │ ├── Ghrog-pubkey.pgp
│ │ ├── README.md
│ │ ├── cryptozeny-pubkey.asc
│ │ ├── cryptozeny-pubkey.pgp
│ │ ├── decryp2kanon-pubkey.asc
│ │ ├── decryp2kanon-pubkey.pgp
│ │ ├── ilmango-pubkey.asc
│ │ └── ilmango-pubkey.pgp
│ ├── init/
│ │ ├── README.md
│ │ ├── bitcoind.conf
│ │ ├── bitcoind.init
│ │ ├── bitcoind.openrc
│ │ ├── bitcoind.openrcconf
│ │ ├── bitcoind.service
│ │ └── org.bitcoin.bitcoind.plist
│ ├── install_db4.sh
│ ├── linearize/
│ │ ├── README.md
│ │ ├── example-linearize.cfg
│ │ ├── linearize-data.py
│ │ ├── linearize-hashes.py
│ │ └── linearize.cfg
│ ├── macdeploy/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── custom_dsstore.py
│ │ ├── detached-sig-apply.sh
│ │ ├── detached-sig-create.sh
│ │ ├── extract-osx-sdk.sh
│ │ ├── fancy.plist
│ │ └── macdeployqtplus
│ ├── qos/
│ │ ├── README.md
│ │ └── tc.sh
│ ├── rpm/
│ │ ├── README.md
│ │ ├── bitcoin.fc
│ │ ├── bitcoin.if
│ │ ├── bitcoin.spec
│ │ └── bitcoin.te
│ ├── seeds/
│ │ ├── README.md
│ │ ├── generate-seeds.py
│ │ ├── makeseeds.py
│ │ ├── nodes_main.txt
│ │ ├── nodes_test.txt
│ │ ├── seeds_main.txt
│ │ └── seeds_test.txt
│ ├── testgen/
│ │ ├── README.md
│ │ ├── base58.py
│ │ └── gen_base58_test_vectors.py
│ ├── tidy_datadir.sh
│ ├── valgrind.supp
│ ├── verify-commits/
│ │ ├── README.md
│ │ ├── allow-revsig-commits
│ │ ├── gpg.sh
│ │ ├── pre-push-hook.sh
│ │ ├── trusted-git-root
│ │ ├── trusted-keys
│ │ ├── trusted-sha512-root-commit
│ │ └── verify-commits.sh
│ ├── verifybinaries/
│ │ ├── README.md
│ │ └── verify.sh
│ ├── windeploy/
│ │ ├── detached-sig-create.sh
│ │ └── win-codesign.cert
│ └── zmq/
│ ├── zmq_sub.py
│ └── zmq_sub3.4.py
├── depends/
│ ├── .gitignore
│ ├── README.md
│ ├── builders/
│ │ ├── darwin.mk
│ │ ├── default.mk
│ │ └── linux.mk
│ ├── config.guess
│ ├── config.site.in
│ ├── config.sub
│ ├── description.md
│ ├── funcs.mk
│ ├── hosts/
│ │ ├── darwin.mk
│ │ ├── default.mk
│ │ ├── linux.mk
│ │ └── mingw32.mk
│ ├── packages/
│ │ ├── bdb.mk
│ │ ├── boost.mk
│ │ ├── dbus.mk
│ │ ├── expat.mk
│ │ ├── fontconfig.mk
│ │ ├── freetype.mk
│ │ ├── libICE.mk
│ │ ├── libSM.mk
│ │ ├── libX11.mk
│ │ ├── libXau.mk
│ │ ├── libXext.mk
│ │ ├── libevent.mk
│ │ ├── libxcb.mk
│ │ ├── miniupnpc.mk
│ │ ├── native_biplist.mk
│ │ ├── native_ccache.mk
│ │ ├── native_cctools.mk
│ │ ├── native_cdrkit.mk
│ │ ├── native_ds_store.mk
│ │ ├── native_libdmg-hfsplus.mk
│ │ ├── native_mac_alias.mk
│ │ ├── native_protobuf.mk
│ │ ├── openssl.mk
│ │ ├── packages.mk
│ │ ├── protobuf.mk
│ │ ├── qrencode.mk
│ │ ├── qt.mk
│ │ ├── xcb_proto.mk
│ │ ├── xextproto.mk
│ │ ├── xproto.mk
│ │ ├── xtrans.mk
│ │ ├── zeromq.mk
│ │ └── zlib.mk
│ ├── packages.md
│ └── patches/
│ └── qt/
│ └── mac-qmake.conf
├── doc/
│ ├── .gitignore
│ ├── Doxyfile.in
│ ├── README.md
│ ├── README_osx.md
│ ├── README_windows.txt
│ ├── REST-interface.md
│ ├── assets-attribution.md
│ ├── benchmarking.md
│ ├── bips.md
│ ├── build-netbsd.md
│ ├── build-openbsd.md
│ ├── build-osx.md
│ ├── build-unix.md
│ ├── build-windows.md
│ ├── dependencies.md
│ ├── developer-notes.md
│ ├── dnsseed-policy.md
│ ├── files.md
│ ├── fuzzing.md
│ ├── gitian-building.md
│ ├── init.md
│ ├── man/
│ │ ├── Makefile.am
│ │ ├── sugarchain-cli.1
│ │ ├── sugarchain-qt.1
│ │ ├── sugarchain-tx.1
│ │ └── sugarchaind.1
│ ├── reduce-traffic.md
│ ├── release-notes.md
│ ├── release-process.md
│ ├── shared-libraries.md
│ ├── tor.md
│ ├── translation_process.md
│ ├── translation_strings_policy.md
│ ├── travis-ci.md
│ └── zmq.md
├── libbitcoinconsensus.pc.in
├── share/
│ ├── genbuild.sh
│ ├── pixmaps/
│ │ ├── bitcoin128.xpm
│ │ ├── bitcoin16.xpm
│ │ ├── bitcoin256.xpm
│ │ ├── bitcoin32.xpm
│ │ └── bitcoin64.xpm
│ ├── qt/
│ │ ├── Info.plist.in
│ │ └── extract_strings_qt.py
│ ├── rpcauth/
│ │ ├── README.md
│ │ └── rpcauth.py
│ └── setup.nsi.in
├── src/
│ ├── .clang-format
│ ├── Makefile.am
│ ├── Makefile.bench.include
│ ├── Makefile.leveldb.include
│ ├── Makefile.qt.include
│ ├── Makefile.qttest.include
│ ├── Makefile.test.include
│ ├── addrdb.cpp
│ ├── addrdb.h
│ ├── addrman.cpp
│ ├── addrman.h
│ ├── amount.h
│ ├── arith_uint256.cpp
│ ├── arith_uint256.h
│ ├── base58.cpp
│ ├── base58.h
│ ├── bech32.cpp
│ ├── bech32.h
│ ├── bench/
│ │ ├── .gitignore
│ │ ├── Examples.cpp
│ │ ├── base58.cpp
│ │ ├── bench.cpp
│ │ ├── bench.h
│ │ ├── bench_bitcoin.cpp
│ │ ├── bench_sugarchain.sh
│ │ ├── ccoins_caching.cpp
│ │ ├── checkblock.cpp
│ │ ├── checkqueue.cpp
│ │ ├── coin_selection.cpp
│ │ ├── crypto_hash.cpp
│ │ ├── data/
│ │ │ └── block413567.raw
│ │ ├── lockedpool.cpp
│ │ ├── mempool_eviction.cpp
│ │ ├── perf.cpp
│ │ ├── perf.h
│ │ ├── prevector_destructor.cpp
│ │ ├── result/
│ │ │ ├── bench_sugarchain.html
│ │ │ └── bench_sugarchain.txt
│ │ ├── rollingbloom.cpp
│ │ └── verify_script.cpp
│ ├── bitcoin-cli-res.rc
│ ├── bitcoin-cli.cpp
│ ├── bitcoin-tx-res.rc
│ ├── bitcoin-tx.cpp
│ ├── bitcoind-res.rc
│ ├── bitcoind.cpp
│ ├── blockencodings.cpp
│ ├── blockencodings.h
│ ├── bloom.cpp
│ ├── bloom.h
│ ├── chain.cpp
│ ├── chain.h
│ ├── chainparams.cpp
│ ├── chainparams.h
│ ├── chainparamsbase.cpp
│ ├── chainparamsbase.h
│ ├── chainparamsseeds.h
│ ├── checkpoints.cpp
│ ├── checkpoints.h
│ ├── checkqueue.h
│ ├── clientversion.cpp
│ ├── clientversion.h
│ ├── coins.cpp
│ ├── coins.h
│ ├── compat/
│ │ ├── byteswap.h
│ │ ├── endian.h
│ │ ├── glibc_compat.cpp
│ │ ├── glibc_sanity.cpp
│ │ ├── glibcxx_sanity.cpp
│ │ ├── sanity.h
│ │ └── strnlen.cpp
│ ├── compat.h
│ ├── compressor.cpp
│ ├── compressor.h
│ ├── config/
│ │ └── .empty
│ ├── consensus/
│ │ ├── consensus.h
│ │ ├── merkle.cpp
│ │ ├── merkle.h
│ │ ├── params.h
│ │ ├── tx_verify.cpp
│ │ ├── tx_verify.h
│ │ └── validation.h
│ ├── core_io.h
│ ├── core_memusage.h
│ ├── core_read.cpp
│ ├── core_write.cpp
│ ├── crypto/
│ │ ├── aes.cpp
│ │ ├── aes.h
│ │ ├── chacha20.cpp
│ │ ├── chacha20.h
│ │ ├── common.h
│ │ ├── ctaes/
│ │ │ ├── COPYING
│ │ │ ├── README.md
│ │ │ ├── bench.c
│ │ │ ├── ctaes.c
│ │ │ ├── ctaes.h
│ │ │ └── test.c
│ │ ├── hmac_sha256.cpp
│ │ ├── hmac_sha256.h
│ │ ├── hmac_sha512.cpp
│ │ ├── hmac_sha512.h
│ │ ├── ripemd160.cpp
│ │ ├── ripemd160.h
│ │ ├── sha1.cpp
│ │ ├── sha1.h
│ │ ├── sha256.cpp
│ │ ├── sha256.h
│ │ ├── sha256_sse4.cpp
│ │ ├── sha512.cpp
│ │ ├── sha512.h
│ │ └── yespower-1.0.1/
│ │ ├── CHANGES
│ │ ├── PERFORMANCE
│ │ ├── README
│ │ ├── TESTS-OK
│ │ ├── benchmark.c
│ │ ├── insecure_memzero.h
│ │ ├── sha256.c
│ │ ├── sha256.h
│ │ ├── sysendian.h
│ │ ├── tests.c
│ │ ├── yespower-opt.c
│ │ ├── yespower-platform.c
│ │ ├── yespower-ref.c
│ │ └── yespower.h
│ ├── cuckoocache.h
│ ├── dbwrapper.cpp
│ ├── dbwrapper.h
│ ├── fs.cpp
│ ├── fs.h
│ ├── hash.cpp
│ ├── hash.h
│ ├── httprpc.cpp
│ ├── httprpc.h
│ ├── httpserver.cpp
│ ├── httpserver.h
│ ├── indirectmap.h
│ ├── init.cpp
│ ├── init.h
│ ├── key.cpp
│ ├── key.h
│ ├── keystore.cpp
│ ├── keystore.h
│ ├── leveldb/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── NEWS
│ │ ├── README.md
│ │ ├── TODO
│ │ ├── WINDOWS.md
│ │ ├── build_detect_platform
│ │ ├── db/
│ │ │ ├── autocompact_test.cc
│ │ │ ├── builder.cc
│ │ │ ├── builder.h
│ │ │ ├── c.cc
│ │ │ ├── c_test.c
│ │ │ ├── corruption_test.cc
│ │ │ ├── db_bench.cc
│ │ │ ├── db_impl.cc
│ │ │ ├── db_impl.h
│ │ │ ├── db_iter.cc
│ │ │ ├── db_iter.h
│ │ │ ├── db_test.cc
│ │ │ ├── dbformat.cc
│ │ │ ├── dbformat.h
│ │ │ ├── dbformat_test.cc
│ │ │ ├── dumpfile.cc
│ │ │ ├── fault_injection_test.cc
│ │ │ ├── filename.cc
│ │ │ ├── filename.h
│ │ │ ├── filename_test.cc
│ │ │ ├── leveldbutil.cc
│ │ │ ├── log_format.h
│ │ │ ├── log_reader.cc
│ │ │ ├── log_reader.h
│ │ │ ├── log_test.cc
│ │ │ ├── log_writer.cc
│ │ │ ├── log_writer.h
│ │ │ ├── memtable.cc
│ │ │ ├── memtable.h
│ │ │ ├── recovery_test.cc
│ │ │ ├── repair.cc
│ │ │ ├── skiplist.h
│ │ │ ├── skiplist_test.cc
│ │ │ ├── snapshot.h
│ │ │ ├── table_cache.cc
│ │ │ ├── table_cache.h
│ │ │ ├── version_edit.cc
│ │ │ ├── version_edit.h
│ │ │ ├── version_edit_test.cc
│ │ │ ├── version_set.cc
│ │ │ ├── version_set.h
│ │ │ ├── version_set_test.cc
│ │ │ ├── write_batch.cc
│ │ │ ├── write_batch_internal.h
│ │ │ └── write_batch_test.cc
│ │ ├── doc/
│ │ │ ├── bench/
│ │ │ │ ├── db_bench_sqlite3.cc
│ │ │ │ └── db_bench_tree_db.cc
│ │ │ ├── benchmark.html
│ │ │ ├── impl.md
│ │ │ ├── index.md
│ │ │ ├── log_format.md
│ │ │ └── table_format.md
│ │ ├── helpers/
│ │ │ └── memenv/
│ │ │ ├── memenv.cc
│ │ │ ├── memenv.h
│ │ │ └── memenv_test.cc
│ │ ├── include/
│ │ │ └── leveldb/
│ │ │ ├── c.h
│ │ │ ├── cache.h
│ │ │ ├── comparator.h
│ │ │ ├── db.h
│ │ │ ├── dumpfile.h
│ │ │ ├── env.h
│ │ │ ├── filter_policy.h
│ │ │ ├── iterator.h
│ │ │ ├── options.h
│ │ │ ├── slice.h
│ │ │ ├── status.h
│ │ │ ├── table.h
│ │ │ ├── table_builder.h
│ │ │ └── write_batch.h
│ │ ├── issues/
│ │ │ ├── issue178_test.cc
│ │ │ └── issue200_test.cc
│ │ ├── port/
│ │ │ ├── README
│ │ │ ├── atomic_pointer.h
│ │ │ ├── port.h
│ │ │ ├── port_example.h
│ │ │ ├── port_posix.cc
│ │ │ ├── port_posix.h
│ │ │ ├── port_posix_sse.cc
│ │ │ ├── port_win.cc
│ │ │ ├── port_win.h
│ │ │ ├── thread_annotations.h
│ │ │ └── win/
│ │ │ └── stdint.h
│ │ ├── table/
│ │ │ ├── block.cc
│ │ │ ├── block.h
│ │ │ ├── block_builder.cc
│ │ │ ├── block_builder.h
│ │ │ ├── filter_block.cc
│ │ │ ├── filter_block.h
│ │ │ ├── filter_block_test.cc
│ │ │ ├── format.cc
│ │ │ ├── format.h
│ │ │ ├── iterator.cc
│ │ │ ├── iterator_wrapper.h
│ │ │ ├── merger.cc
│ │ │ ├── merger.h
│ │ │ ├── table.cc
│ │ │ ├── table_builder.cc
│ │ │ ├── table_test.cc
│ │ │ ├── two_level_iterator.cc
│ │ │ └── two_level_iterator.h
│ │ └── util/
│ │ ├── arena.cc
│ │ ├── arena.h
│ │ ├── arena_test.cc
│ │ ├── bloom.cc
│ │ ├── bloom_test.cc
│ │ ├── cache.cc
│ │ ├── cache_test.cc
│ │ ├── coding.cc
│ │ ├── coding.h
│ │ ├── coding_test.cc
│ │ ├── comparator.cc
│ │ ├── crc32c.cc
│ │ ├── crc32c.h
│ │ ├── crc32c_test.cc
│ │ ├── env.cc
│ │ ├── env_posix.cc
│ │ ├── env_posix_test.cc
│ │ ├── env_posix_test_helper.h
│ │ ├── env_test.cc
│ │ ├── env_win.cc
│ │ ├── filter_policy.cc
│ │ ├── hash.cc
│ │ ├── hash.h
│ │ ├── hash_test.cc
│ │ ├── histogram.cc
│ │ ├── histogram.h
│ │ ├── logging.cc
│ │ ├── logging.h
│ │ ├── mutexlock.h
│ │ ├── options.cc
│ │ ├── posix_logger.h
│ │ ├── random.h
│ │ ├── status.cc
│ │ ├── testharness.cc
│ │ ├── testharness.h
│ │ ├── testutil.cc
│ │ └── testutil.h
│ ├── limitedmap.h
│ ├── memusage.h
│ ├── merkleblock.cpp
│ ├── merkleblock.h
│ ├── miner.cpp
│ ├── miner.h
│ ├── net.cpp
│ ├── net.h
│ ├── net_processing.cpp
│ ├── net_processing.h
│ ├── netaddress.cpp
│ ├── netaddress.h
│ ├── netbase.cpp
│ ├── netbase.h
│ ├── netmessagemaker.h
│ ├── noui.cpp
│ ├── noui.h
│ ├── obj/
│ │ └── .gitignore
│ ├── obj-test/
│ │ └── .gitignore
│ ├── policy/
│ │ ├── feerate.cpp
│ │ ├── feerate.h
│ │ ├── fees.cpp
│ │ ├── fees.h
│ │ ├── policy.cpp
│ │ ├── policy.h
│ │ ├── rbf.cpp
│ │ └── rbf.h
│ ├── pow.cpp
│ ├── pow.h
│ ├── prevector.h
│ ├── primitives/
│ │ ├── block.cpp
│ │ ├── block.h
│ │ ├── transaction.cpp
│ │ └── transaction.h
│ ├── protocol.cpp
│ ├── protocol.h
│ ├── pubkey.cpp
│ ├── pubkey.h
│ ├── qt/
│ │ ├── addressbookpage.cpp
│ │ ├── addressbookpage.h
│ │ ├── addresstablemodel.cpp
│ │ ├── addresstablemodel.h
│ │ ├── askpassphrasedialog.cpp
│ │ ├── askpassphrasedialog.h
│ │ ├── bantablemodel.cpp
│ │ ├── bantablemodel.h
│ │ ├── bitcoin.cpp
│ │ ├── bitcoin.qrc
│ │ ├── bitcoin_locale.qrc
│ │ ├── bitcoinaddressvalidator.cpp
│ │ ├── bitcoinaddressvalidator.h
│ │ ├── bitcoinamountfield.cpp
│ │ ├── bitcoinamountfield.h
│ │ ├── bitcoingui.cpp
│ │ ├── bitcoingui.h
│ │ ├── bitcoinstrings.cpp
│ │ ├── bitcoinunits.cpp
│ │ ├── bitcoinunits.h
│ │ ├── callback.h
│ │ ├── clientmodel.cpp
│ │ ├── clientmodel.h
│ │ ├── coincontroldialog.cpp
│ │ ├── coincontroldialog.h
│ │ ├── coincontroltreewidget.cpp
│ │ ├── coincontroltreewidget.h
│ │ ├── csvmodelwriter.cpp
│ │ ├── csvmodelwriter.h
│ │ ├── editaddressdialog.cpp
│ │ ├── editaddressdialog.h
│ │ ├── forms/
│ │ │ ├── addressbookpage.ui
│ │ │ ├── askpassphrasedialog.ui
│ │ │ ├── coincontroldialog.ui
│ │ │ ├── debugwindow.ui
│ │ │ ├── editaddressdialog.ui
│ │ │ ├── helpmessagedialog.ui
│ │ │ ├── intro.ui
│ │ │ ├── modaloverlay.ui
│ │ │ ├── openuridialog.ui
│ │ │ ├── optionsdialog.ui
│ │ │ ├── overviewpage.ui
│ │ │ ├── receivecoinsdialog.ui
│ │ │ ├── receiverequestdialog.ui
│ │ │ ├── sendcoinsdialog.ui
│ │ │ ├── sendcoinsentry.ui
│ │ │ ├── signverifymessagedialog.ui
│ │ │ └── transactiondescdialog.ui
│ │ ├── guiconstants.h
│ │ ├── guiutil.cpp
│ │ ├── guiutil.h
│ │ ├── intro.cpp
│ │ ├── intro.h
│ │ ├── locale/
│ │ │ ├── bitcoin_af.ts
│ │ │ ├── bitcoin_af_ZA.ts
│ │ │ ├── bitcoin_am.ts
│ │ │ ├── bitcoin_ar.ts
│ │ │ ├── bitcoin_be_BY.ts
│ │ │ ├── bitcoin_bg.ts
│ │ │ ├── bitcoin_bg_BG.ts
│ │ │ ├── bitcoin_bn.ts
│ │ │ ├── bitcoin_bs.ts
│ │ │ ├── bitcoin_ca.ts
│ │ │ ├── bitcoin_ca@valencia.ts
│ │ │ ├── bitcoin_ca_ES.ts
│ │ │ ├── bitcoin_cs.ts
│ │ │ ├── bitcoin_cs_CZ.ts
│ │ │ ├── bitcoin_cy.ts
│ │ │ ├── bitcoin_da.ts
│ │ │ ├── bitcoin_de.ts
│ │ │ ├── bitcoin_de_DE.ts
│ │ │ ├── bitcoin_el.ts
│ │ │ ├── bitcoin_el_GR.ts
│ │ │ ├── bitcoin_en.ts
│ │ │ ├── bitcoin_en_AU.ts
│ │ │ ├── bitcoin_en_GB.ts
│ │ │ ├── bitcoin_eo.ts
│ │ │ ├── bitcoin_es.ts
│ │ │ ├── bitcoin_es_419.ts
│ │ │ ├── bitcoin_es_AR.ts
│ │ │ ├── bitcoin_es_CL.ts
│ │ │ ├── bitcoin_es_CO.ts
│ │ │ ├── bitcoin_es_DO.ts
│ │ │ ├── bitcoin_es_ES.ts
│ │ │ ├── bitcoin_es_MX.ts
│ │ │ ├── bitcoin_es_UY.ts
│ │ │ ├── bitcoin_es_VE.ts
│ │ │ ├── bitcoin_et.ts
│ │ │ ├── bitcoin_et_EE.ts
│ │ │ ├── bitcoin_eu_ES.ts
│ │ │ ├── bitcoin_fa.ts
│ │ │ ├── bitcoin_fa_IR.ts
│ │ │ ├── bitcoin_fi.ts
│ │ │ ├── bitcoin_fr.ts
│ │ │ ├── bitcoin_fr_CA.ts
│ │ │ ├── bitcoin_fr_FR.ts
│ │ │ ├── bitcoin_gl.ts
│ │ │ ├── bitcoin_he.ts
│ │ │ ├── bitcoin_he_IL.ts
│ │ │ ├── bitcoin_hi_IN.ts
│ │ │ ├── bitcoin_hr.ts
│ │ │ ├── bitcoin_hu.ts
│ │ │ ├── bitcoin_hu_HU.ts
│ │ │ ├── bitcoin_id.ts
│ │ │ ├── bitcoin_id_ID.ts
│ │ │ ├── bitcoin_is.ts
│ │ │ ├── bitcoin_it.ts
│ │ │ ├── bitcoin_it_IT.ts
│ │ │ ├── bitcoin_ja.ts
│ │ │ ├── bitcoin_ja_JP.ts
│ │ │ ├── bitcoin_ka.ts
│ │ │ ├── bitcoin_kk_KZ.ts
│ │ │ ├── bitcoin_km_KH.ts
│ │ │ ├── bitcoin_ko.ts
│ │ │ ├── bitcoin_ko_KR.ts
│ │ │ ├── bitcoin_ku_IQ.ts
│ │ │ ├── bitcoin_ky.ts
│ │ │ ├── bitcoin_la.ts
│ │ │ ├── bitcoin_lt.ts
│ │ │ ├── bitcoin_lv_LV.ts
│ │ │ ├── bitcoin_mk_MK.ts
│ │ │ ├── bitcoin_ml.ts
│ │ │ ├── bitcoin_mn.ts
│ │ │ ├── bitcoin_mr_IN.ts
│ │ │ ├── bitcoin_ms.ts
│ │ │ ├── bitcoin_ms_MY.ts
│ │ │ ├── bitcoin_my.ts
│ │ │ ├── bitcoin_nb.ts
│ │ │ ├── bitcoin_nb_NO.ts
│ │ │ ├── bitcoin_ne.ts
│ │ │ ├── bitcoin_nl.ts
│ │ │ ├── bitcoin_nl_NL.ts
│ │ │ ├── bitcoin_pam.ts
│ │ │ ├── bitcoin_pl.ts
│ │ │ ├── bitcoin_pl_PL.ts
│ │ │ ├── bitcoin_pt.ts
│ │ │ ├── bitcoin_pt_BR.ts
│ │ │ ├── bitcoin_pt_PT.ts
│ │ │ ├── bitcoin_ro.ts
│ │ │ ├── bitcoin_ro_RO.ts
│ │ │ ├── bitcoin_ru.ts
│ │ │ ├── bitcoin_ru_RU.ts
│ │ │ ├── bitcoin_si.ts
│ │ │ ├── bitcoin_sk.ts
│ │ │ ├── bitcoin_sl_SI.ts
│ │ │ ├── bitcoin_sn.ts
│ │ │ ├── bitcoin_sq.ts
│ │ │ ├── bitcoin_sr.ts
│ │ │ ├── bitcoin_sr@latin.ts
│ │ │ ├── bitcoin_sv.ts
│ │ │ ├── bitcoin_ta.ts
│ │ │ ├── bitcoin_ta_IN.ts
│ │ │ ├── bitcoin_te.ts
│ │ │ ├── bitcoin_th.ts
│ │ │ ├── bitcoin_th_TH.ts
│ │ │ ├── bitcoin_tr.ts
│ │ │ ├── bitcoin_tr_TR.ts
│ │ │ ├── bitcoin_uk.ts
│ │ │ ├── bitcoin_ur_PK.ts
│ │ │ ├── bitcoin_uz@Cyrl.ts
│ │ │ ├── bitcoin_vi.ts
│ │ │ ├── bitcoin_vi_VN.ts
│ │ │ ├── bitcoin_zh-Hans.ts
│ │ │ ├── bitcoin_zh.ts
│ │ │ ├── bitcoin_zh_CN.ts
│ │ │ ├── bitcoin_zh_HK.ts
│ │ │ └── bitcoin_zh_TW.ts
│ │ ├── macdockiconhandler.h
│ │ ├── macdockiconhandler.mm
│ │ ├── macnotificationhandler.h
│ │ ├── macnotificationhandler.mm
│ │ ├── modaloverlay.cpp
│ │ ├── modaloverlay.h
│ │ ├── networkstyle.cpp
│ │ ├── networkstyle.h
│ │ ├── notificator.cpp
│ │ ├── notificator.h
│ │ ├── openuridialog.cpp
│ │ ├── openuridialog.h
│ │ ├── optionsdialog.cpp
│ │ ├── optionsdialog.h
│ │ ├── optionsmodel.cpp
│ │ ├── optionsmodel.h
│ │ ├── overviewpage.cpp
│ │ ├── overviewpage.h
│ │ ├── paymentrequest.proto
│ │ ├── paymentrequestplus.cpp
│ │ ├── paymentrequestplus.h
│ │ ├── paymentserver.cpp
│ │ ├── paymentserver.h
│ │ ├── peertablemodel.cpp
│ │ ├── peertablemodel.h
│ │ ├── platformstyle.cpp
│ │ ├── platformstyle.h
│ │ ├── qvalidatedlineedit.cpp
│ │ ├── qvalidatedlineedit.h
│ │ ├── qvaluecombobox.cpp
│ │ ├── qvaluecombobox.h
│ │ ├── receivecoinsdialog.cpp
│ │ ├── receivecoinsdialog.h
│ │ ├── receiverequestdialog.cpp
│ │ ├── receiverequestdialog.h
│ │ ├── recentrequeststablemodel.cpp
│ │ ├── recentrequeststablemodel.h
│ │ ├── res/
│ │ │ ├── bitcoin-qt-res.rc
│ │ │ ├── icons/
│ │ │ │ └── bitcoin.icns
│ │ │ └── movies/
│ │ │ └── makespinner.sh
│ │ ├── rpcconsole.cpp
│ │ ├── rpcconsole.h
│ │ ├── sendcoinsdialog.cpp
│ │ ├── sendcoinsdialog.h
│ │ ├── sendcoinsentry.cpp
│ │ ├── sendcoinsentry.h
│ │ ├── signverifymessagedialog.cpp
│ │ ├── signverifymessagedialog.h
│ │ ├── splashscreen.cpp
│ │ ├── splashscreen.h
│ │ ├── test/
│ │ │ ├── compattests.cpp
│ │ │ ├── compattests.h
│ │ │ ├── paymentrequestdata.h
│ │ │ ├── paymentservertests.cpp
│ │ │ ├── paymentservertests.h
│ │ │ ├── rpcnestedtests.cpp
│ │ │ ├── rpcnestedtests.h
│ │ │ ├── test_main.cpp
│ │ │ ├── uritests.cpp
│ │ │ ├── uritests.h
│ │ │ ├── wallettests.cpp
│ │ │ └── wallettests.h
│ │ ├── trafficgraphwidget.cpp
│ │ ├── trafficgraphwidget.h
│ │ ├── transactiondesc.cpp
│ │ ├── transactiondesc.h
│ │ ├── transactiondescdialog.cpp
│ │ ├── transactiondescdialog.h
│ │ ├── transactionfilterproxy.cpp
│ │ ├── transactionfilterproxy.h
│ │ ├── transactionrecord.cpp
│ │ ├── transactionrecord.h
│ │ ├── transactiontablemodel.cpp
│ │ ├── transactiontablemodel.h
│ │ ├── transactionview.cpp
│ │ ├── transactionview.h
│ │ ├── utilitydialog.cpp
│ │ ├── utilitydialog.h
│ │ ├── walletframe.cpp
│ │ ├── walletframe.h
│ │ ├── walletmodel.cpp
│ │ ├── walletmodel.h
│ │ ├── walletmodeltransaction.cpp
│ │ ├── walletmodeltransaction.h
│ │ ├── walletview.cpp
│ │ ├── walletview.h
│ │ ├── winshutdownmonitor.cpp
│ │ └── winshutdownmonitor.h
│ ├── random.cpp
│ ├── random.h
│ ├── rest.cpp
│ ├── reverse_iterator.h
│ ├── reverselock.h
│ ├── rpc/
│ │ ├── blockchain.cpp
│ │ ├── blockchain.h
│ │ ├── client.cpp
│ │ ├── client.h
│ │ ├── mining.cpp
│ │ ├── mining.h
│ │ ├── misc.cpp
│ │ ├── net.cpp
│ │ ├── protocol.cpp
│ │ ├── protocol.h
│ │ ├── rawtransaction.cpp
│ │ ├── register.h
│ │ ├── safemode.cpp
│ │ ├── safemode.h
│ │ ├── server.cpp
│ │ ├── server.h
│ │ ├── util.cpp
│ │ └── util.h
│ ├── scheduler.cpp
│ ├── scheduler.h
│ ├── script/
│ │ ├── bitcoinconsensus.cpp
│ │ ├── bitcoinconsensus.h
│ │ ├── interpreter.cpp
│ │ ├── interpreter.h
│ │ ├── ismine.cpp
│ │ ├── ismine.h
│ │ ├── script.cpp
│ │ ├── script.h
│ │ ├── script_error.cpp
│ │ ├── script_error.h
│ │ ├── sigcache.cpp
│ │ ├── sigcache.h
│ │ ├── sign.cpp
│ │ ├── sign.h
│ │ ├── standard.cpp
│ │ └── standard.h
│ ├── secp256k1/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── COPYING
│ │ ├── Makefile.am
│ │ ├── README.md
│ │ ├── TODO
│ │ ├── autogen.sh
│ │ ├── build-aux/
│ │ │ └── m4/
│ │ │ ├── ax_jni_include_dir.m4
│ │ │ ├── ax_prog_cc_for_build.m4
│ │ │ └── bitcoin_secp.m4
│ │ ├── configure.ac
│ │ ├── contrib/
│ │ │ ├── lax_der_parsing.c
│ │ │ ├── lax_der_parsing.h
│ │ │ ├── lax_der_privatekey_parsing.c
│ │ │ └── lax_der_privatekey_parsing.h
│ │ ├── include/
│ │ │ ├── secp256k1.h
│ │ │ ├── secp256k1_ecdh.h
│ │ │ └── secp256k1_recovery.h
│ │ ├── libsecp256k1.pc.in
│ │ ├── obj/
│ │ │ └── .gitignore
│ │ ├── sage/
│ │ │ ├── group_prover.sage
│ │ │ ├── secp256k1.sage
│ │ │ └── weierstrass_prover.sage
│ │ └── src/
│ │ ├── asm/
│ │ │ └── field_10x26_arm.s
│ │ ├── basic-config.h
│ │ ├── bench.h
│ │ ├── bench_ecdh.c
│ │ ├── bench_internal.c
│ │ ├── bench_recover.c
│ │ ├── bench_sign.c
│ │ ├── bench_verify.c
│ │ ├── ecdsa.h
│ │ ├── ecdsa_impl.h
│ │ ├── eckey.h
│ │ ├── eckey_impl.h
│ │ ├── ecmult.h
│ │ ├── ecmult_const.h
│ │ ├── ecmult_const_impl.h
│ │ ├── ecmult_gen.h
│ │ ├── ecmult_gen_impl.h
│ │ ├── ecmult_impl.h
│ │ ├── field.h
│ │ ├── field_10x26.h
│ │ ├── field_10x26_impl.h
│ │ ├── field_5x52.h
│ │ ├── field_5x52_asm_impl.h
│ │ ├── field_5x52_impl.h
│ │ ├── field_5x52_int128_impl.h
│ │ ├── field_impl.h
│ │ ├── gen_context.c
│ │ ├── group.h
│ │ ├── group_impl.h
│ │ ├── hash.h
│ │ ├── hash_impl.h
│ │ ├── java/
│ │ │ ├── org/
│ │ │ │ └── bitcoin/
│ │ │ │ ├── NativeSecp256k1.java
│ │ │ │ ├── NativeSecp256k1Test.java
│ │ │ │ ├── NativeSecp256k1Util.java
│ │ │ │ └── Secp256k1Context.java
│ │ │ ├── org_bitcoin_NativeSecp256k1.c
│ │ │ ├── org_bitcoin_NativeSecp256k1.h
│ │ │ ├── org_bitcoin_Secp256k1Context.c
│ │ │ └── org_bitcoin_Secp256k1Context.h
│ │ ├── modules/
│ │ │ ├── ecdh/
│ │ │ │ ├── Makefile.am.include
│ │ │ │ ├── main_impl.h
│ │ │ │ └── tests_impl.h
│ │ │ └── recovery/
│ │ │ ├── Makefile.am.include
│ │ │ ├── main_impl.h
│ │ │ └── tests_impl.h
│ │ ├── num.h
│ │ ├── num_gmp.h
│ │ ├── num_gmp_impl.h
│ │ ├── num_impl.h
│ │ ├── scalar.h
│ │ ├── scalar_4x64.h
│ │ ├── scalar_4x64_impl.h
│ │ ├── scalar_8x32.h
│ │ ├── scalar_8x32_impl.h
│ │ ├── scalar_impl.h
│ │ ├── scalar_low.h
│ │ ├── scalar_low_impl.h
│ │ ├── secp256k1.c
│ │ ├── testrand.h
│ │ ├── testrand_impl.h
│ │ ├── tests.c
│ │ ├── tests_exhaustive.c
│ │ └── util.h
│ ├── serialize.h
│ ├── streams.h
│ ├── support/
│ │ ├── allocators/
│ │ │ ├── secure.h
│ │ │ └── zeroafterfree.h
│ │ ├── cleanse.cpp
│ │ ├── cleanse.h
│ │ ├── events.h
│ │ ├── lockedpool.cpp
│ │ └── lockedpool.h
│ ├── sync.cpp
│ ├── sync.h
│ ├── test/
│ │ ├── DoS_tests.cpp
│ │ ├── README.md
│ │ ├── addrman_tests.cpp
│ │ ├── allocator_tests.cpp
│ │ ├── amount_tests.cpp
│ │ ├── arith_uint256_tests.cpp
│ │ ├── base32_tests.cpp
│ │ ├── base58_tests.cpp
│ │ ├── base64_tests.cpp
│ │ ├── bech32_tests.cpp
│ │ ├── bip32_tests.cpp
│ │ ├── blockchain_tests.cpp
│ │ ├── blockencodings_tests.cpp
│ │ ├── bloom_tests.cpp
│ │ ├── bswap_tests.cpp
│ │ ├── checkqueue_tests.cpp
│ │ ├── coins_tests.cpp
│ │ ├── compress_tests.cpp
│ │ ├── crypto_tests.cpp
│ │ ├── cuckoocache_tests.cpp
│ │ ├── data/
│ │ │ ├── README.md
│ │ │ ├── base58_encode_decode.json
│ │ │ ├── base58_keys_invalid.json
│ │ │ ├── base58_keys_valid.json
│ │ │ ├── script_tests.json
│ │ │ ├── sighash.json
│ │ │ ├── tx_invalid.json
│ │ │ └── tx_valid.json
│ │ ├── dbwrapper_tests.cpp
│ │ ├── getarg_tests.cpp
│ │ ├── hash_tests.cpp
│ │ ├── key_tests.cpp
│ │ ├── limitedmap_tests.cpp
│ │ ├── main_tests.cpp
│ │ ├── mempool_tests.cpp
│ │ ├── merkle_tests.cpp
│ │ ├── merkleblock_tests.cpp
│ │ ├── miner_tests.cpp
│ │ ├── multisig_tests.cpp
│ │ ├── net_tests.cpp
│ │ ├── netbase_tests.cpp
│ │ ├── pmt_tests.cpp
│ │ ├── policyestimator_tests.cpp
│ │ ├── pow_tests.cpp
│ │ ├── prevector_tests.cpp
│ │ ├── raii_event_tests.cpp
│ │ ├── random_tests.cpp
│ │ ├── reverselock_tests.cpp
│ │ ├── rpc_tests.cpp
│ │ ├── sanity_tests.cpp
│ │ ├── scheduler_tests.cpp
│ │ ├── script_P2SH_tests.cpp
│ │ ├── script_standard_tests.cpp
│ │ ├── script_tests.cpp
│ │ ├── scriptnum10.h
│ │ ├── scriptnum_tests.cpp
│ │ ├── serialize_tests.cpp
│ │ ├── sighash_tests.cpp
│ │ ├── sigopcount_tests.cpp
│ │ ├── skiplist_tests.cpp
│ │ ├── streams_tests.cpp
│ │ ├── test_bitcoin.cpp
│ │ ├── test_bitcoin.h
│ │ ├── test_bitcoin_fuzzy.cpp
│ │ ├── test_bitcoin_main.cpp
│ │ ├── timedata_tests.cpp
│ │ ├── torcontrol_tests.cpp
│ │ ├── transaction_tests.cpp
│ │ ├── txvalidation_tests.cpp
│ │ ├── txvalidationcache_tests.cpp
│ │ ├── uint256_tests.cpp
│ │ ├── util_tests.cpp
│ │ ├── validation_block_tests.cpp
│ │ └── versionbits_tests.cpp
│ ├── threadinterrupt.cpp
│ ├── threadinterrupt.h
│ ├── threadsafety.h
│ ├── timedata.cpp
│ ├── timedata.h
│ ├── tinyformat.h
│ ├── torcontrol.cpp
│ ├── torcontrol.h
│ ├── txdb.cpp
│ ├── txdb.h
│ ├── txmempool.cpp
│ ├── txmempool.h
│ ├── ui_interface.cpp
│ ├── ui_interface.h
│ ├── uint256.cpp
│ ├── uint256.h
│ ├── undo.h
│ ├── univalue/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── COPYING
│ │ ├── Makefile.am
│ │ ├── README.md
│ │ ├── TODO
│ │ ├── autogen.sh
│ │ ├── build-aux/
│ │ │ └── m4/
│ │ │ └── .gitignore
│ │ ├── configure.ac
│ │ ├── include/
│ │ │ └── univalue.h
│ │ ├── lib/
│ │ │ ├── .gitignore
│ │ │ ├── univalue.cpp
│ │ │ ├── univalue_escapes.h
│ │ │ ├── univalue_get.cpp
│ │ │ ├── univalue_read.cpp
│ │ │ ├── univalue_utffilter.h
│ │ │ └── univalue_write.cpp
│ │ ├── pc/
│ │ │ ├── libunivalue-uninstalled.pc.in
│ │ │ └── libunivalue.pc.in
│ │ └── test/
│ │ ├── .gitignore
│ │ ├── fail1.json
│ │ ├── fail10.json
│ │ ├── fail11.json
│ │ ├── fail12.json
│ │ ├── fail13.json
│ │ ├── fail14.json
│ │ ├── fail15.json
│ │ ├── fail16.json
│ │ ├── fail17.json
│ │ ├── fail18.json
│ │ ├── fail19.json
│ │ ├── fail2.json
│ │ ├── fail20.json
│ │ ├── fail21.json
│ │ ├── fail22.json
│ │ ├── fail23.json
│ │ ├── fail24.json
│ │ ├── fail25.json
│ │ ├── fail26.json
│ │ ├── fail27.json
│ │ ├── fail28.json
│ │ ├── fail29.json
│ │ ├── fail3.json
│ │ ├── fail30.json
│ │ ├── fail31.json
│ │ ├── fail32.json
│ │ ├── fail33.json
│ │ ├── fail34.json
│ │ ├── fail35.json
│ │ ├── fail36.json
│ │ ├── fail37.json
│ │ ├── fail38.json
│ │ ├── fail39.json
│ │ ├── fail4.json
│ │ ├── fail40.json
│ │ ├── fail41.json
│ │ ├── fail42.json
│ │ ├── fail44.json
│ │ ├── fail5.json
│ │ ├── fail6.json
│ │ ├── fail7.json
│ │ ├── fail8.json
│ │ ├── fail9.json
│ │ ├── no_nul.cpp
│ │ ├── object.cpp
│ │ ├── pass1.json
│ │ ├── pass2.json
│ │ ├── pass3.json
│ │ ├── round1.json
│ │ ├── round2.json
│ │ ├── round3.json
│ │ ├── round4.json
│ │ ├── round5.json
│ │ ├── round6.json
│ │ ├── round7.json
│ │ ├── test_json.cpp
│ │ └── unitester.cpp
│ ├── util.cpp
│ ├── util.h
│ ├── utilmoneystr.cpp
│ ├── utilmoneystr.h
│ ├── utilstrencodings.cpp
│ ├── utilstrencodings.h
│ ├── utiltime.cpp
│ ├── utiltime.h
│ ├── validation.cpp
│ ├── validation.h
│ ├── validationinterface.cpp
│ ├── validationinterface.h
│ ├── version.h
│ ├── versionbits.cpp
│ ├── versionbits.h
│ ├── wallet/
│ │ ├── coincontrol.h
│ │ ├── crypter.cpp
│ │ ├── crypter.h
│ │ ├── db.cpp
│ │ ├── db.h
│ │ ├── feebumper.cpp
│ │ ├── feebumper.h
│ │ ├── fees.cpp
│ │ ├── fees.h
│ │ ├── init.cpp
│ │ ├── init.h
│ │ ├── rpcdump.cpp
│ │ ├── rpcwallet.cpp
│ │ ├── rpcwallet.h
│ │ ├── test/
│ │ │ ├── accounting_tests.cpp
│ │ │ ├── crypto_tests.cpp
│ │ │ ├── wallet_test_fixture.cpp
│ │ │ ├── wallet_test_fixture.h
│ │ │ └── wallet_tests.cpp
│ │ ├── wallet.cpp
│ │ ├── wallet.h
│ │ ├── walletdb.cpp
│ │ ├── walletdb.h
│ │ ├── walletutil.cpp
│ │ └── walletutil.h
│ ├── warnings.cpp
│ ├── warnings.h
│ └── zmq/
│ ├── zmqabstractnotifier.cpp
│ ├── zmqabstractnotifier.h
│ ├── zmqconfig.h
│ ├── zmqnotificationinterface.cpp
│ ├── zmqnotificationinterface.h
│ ├── zmqpublishnotifier.cpp
│ └── zmqpublishnotifier.h
└── test/
├── README.md
├── config.ini.in
├── functional/
│ ├── .gitignore
│ ├── README.md
│ ├── combine_logs.py
│ ├── combined_log_template.html
│ ├── create_cache.py
│ ├── example_test.py
│ ├── feature_assumevalid.py
│ ├── feature_bip68_sequence.py
│ ├── feature_bip9_softforks.py
│ ├── feature_block.py
│ ├── feature_cltv.py
│ ├── feature_config_args.py
│ ├── feature_csv_activation.py
│ ├── feature_dbcrash.py
│ ├── feature_dersig.py
│ ├── feature_fee_estimation.py
│ ├── feature_help.py
│ ├── feature_logging.py
│ ├── feature_maxuploadtarget.py
│ ├── feature_minchainwork.py
│ ├── feature_notifications.py
│ ├── feature_nulldummy.py
│ ├── feature_proxy.py
│ ├── feature_pruning.py
│ ├── feature_rbf.py
│ ├── feature_reindex.py
│ ├── feature_segwit.py
│ ├── feature_uacomment.py
│ ├── feature_versionbits_warning.py
│ ├── interface_bitcoin_cli.py
│ ├── interface_http.py
│ ├── interface_rest.py
│ ├── interface_zmq.py
│ ├── mempool_limit.py
│ ├── mempool_packages.py
│ ├── mempool_persist.py
│ ├── mempool_reorg.py
│ ├── mempool_resurrect.py
│ ├── mempool_spend_coinbase.py
│ ├── mining_basic.py
│ ├── mining_getblocktemplate_longpoll.py
│ ├── mining_prioritisetransaction.py
│ ├── p2p_compactblocks.py
│ ├── p2p_disconnect_ban.py
│ ├── p2p_feefilter.py
│ ├── p2p_fingerprint.py
│ ├── p2p_invalid_block.py
│ ├── p2p_invalid_tx.py
│ ├── p2p_leak.py
│ ├── p2p_mempool.py
│ ├── p2p_node_network_limited.py
│ ├── p2p_segwit.py
│ ├── p2p_sendheaders.py
│ ├── p2p_timeouts.py
│ ├── p2p_unrequested_blocks.py
│ ├── rpc_bind.py
│ ├── rpc_blockchain.py
│ ├── rpc_decodescript.py
│ ├── rpc_deprecated.py
│ ├── rpc_fundrawtransaction.py
│ ├── rpc_getchaintips.py
│ ├── rpc_invalidateblock.py
│ ├── rpc_listtransactions.py
│ ├── rpc_named_arguments.py
│ ├── rpc_net.py
│ ├── rpc_preciousblock.py
│ ├── rpc_rawtransaction.py
│ ├── rpc_signmessage.py
│ ├── rpc_signrawtransaction.py
│ ├── rpc_txoutproof.py
│ ├── rpc_uptime.py
│ ├── rpc_users.py
│ ├── test_framework/
│ │ ├── __init__.py
│ │ ├── address.py
│ │ ├── authproxy.py
│ │ ├── bignum.py
│ │ ├── blockstore.py
│ │ ├── blocktools.py
│ │ ├── comptool.py
│ │ ├── coverage.py
│ │ ├── key.py
│ │ ├── messages.py
│ │ ├── mininode.py
│ │ ├── netutil.py
│ │ ├── script.py
│ │ ├── segwit_addr.py
│ │ ├── siphash.py
│ │ ├── socks5.py
│ │ ├── test_framework.py
│ │ ├── test_node.py
│ │ └── util.py
│ ├── test_runner.py
│ ├── wallet_abandonconflict.py
│ ├── wallet_accounts.py
│ ├── wallet_address_types.py
│ ├── wallet_backup.py
│ ├── wallet_basic.py
│ ├── wallet_bumpfee.py
│ ├── wallet_disable.py
│ ├── wallet_dump.py
│ ├── wallet_encryption.py
│ ├── wallet_hd.py
│ ├── wallet_import_rescan.py
│ ├── wallet_importmulti.py
│ ├── wallet_importprunedfunds.py
│ ├── wallet_keypool.py
│ ├── wallet_keypool_topup.py
│ ├── wallet_listreceivedby.py
│ ├── wallet_listsinceblock.py
│ ├── wallet_multiwallet.py
│ ├── wallet_resendwallettransactions.py
│ ├── wallet_txn_clone.py
│ ├── wallet_txn_doublespend.py
│ └── wallet_zapwallettxes.py
└── util/
├── bitcoin-util-test.py
└── data/
├── bitcoin-util-test.json
├── blanktxv1.hex
├── blanktxv1.json
├── blanktxv2.hex
├── blanktxv2.json
├── tt-delin1-out.hex
├── tt-delin1-out.json
├── tt-delout1-out.hex
├── tt-delout1-out.json
├── tt-locktime317000-out.hex
├── tt-locktime317000-out.json
├── tx394b54bb.hex
├── txcreate1.hex
├── txcreate1.json
├── txcreate2.hex
├── txcreate2.json
├── txcreatedata1.hex
├── txcreatedata1.json
├── txcreatedata2.hex
├── txcreatedata2.json
├── txcreatedata_seq0.hex
├── txcreatedata_seq0.json
├── txcreatedata_seq1.hex
├── txcreatedata_seq1.json
├── txcreatemultisig1.hex
├── txcreatemultisig1.json
├── txcreatemultisig2.hex
├── txcreatemultisig2.json
├── txcreatemultisig3.hex
├── txcreatemultisig3.json
├── txcreatemultisig4.hex
├── txcreatemultisig4.json
├── txcreatemultisig5.json
├── txcreateoutpubkey1.hex
├── txcreateoutpubkey1.json
├── txcreateoutpubkey2.hex
├── txcreateoutpubkey2.json
├── txcreateoutpubkey3.hex
├── txcreateoutpubkey3.json
├── txcreatescript1.hex
├── txcreatescript1.json
├── txcreatescript2.hex
├── txcreatescript2.json
├── txcreatescript3.hex
├── txcreatescript3.json
├── txcreatescript4.hex
├── txcreatescript4.json
├── txcreatesignv1.hex
├── txcreatesignv1.json
└── txcreatesignv2.hex
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
src/clientversion.cpp export-subst
================================================
FILE: .gitignore
================================================
*.tar.gz
*.exe
src/sugarchain
src/sugarchaind
src/sugarchain-cli
src/sugarchain-tx
src/test/test_sugarchain
src/test/test_sugarchain_fuzzy
src/qt/test/test_sugarchain-qt
# autoreconf
Makefile.in
aclocal.m4
autom4te.cache/
build-aux/config.guess
build-aux/config.sub
build-aux/depcomp
build-aux/install-sh
build-aux/ltmain.sh
build-aux/m4/libtool.m4
build-aux/m4/lt~obsolete.m4
build-aux/m4/ltoptions.m4
build-aux/m4/ltsugar.m4
build-aux/m4/ltversion.m4
build-aux/missing
build-aux/compile
build-aux/test-driver
config.log
config.status
configure
libtool
src/config/bitcoin-config.h
src/config/bitcoin-config.h.in
src/config/stamp-h1
share/setup.nsi
share/qt/Info.plist
src/univalue/gen
src/qt/*.moc
src/qt/moc_*.cpp
src/qt/forms/ui_*.h
src/qt/test/moc*.cpp
src/qt/bitcoin-qt.config
src/qt/bitcoin-qt.creator
src/qt/bitcoin-qt.creator.user
src/qt/bitcoin-qt.files
src/qt/bitcoin-qt.includes
.deps
.dirstamp
.libs
.*.swp
*.*~*
*.bak
*.rej
*.orig
*.pyc
*.o
*.o-*
*.patch
*.a
*.pb.cc
*.pb.h
*.log
*.trs
*.dmg
*.json.h
*.raw.h
#libtool object files
*.lo
*.la
# Compilation and Qt preprocessor part
*.qm
Makefile
sugarchain-qt
Sugarchain-Qt.app
background.tiff*
# Unit-tests
Makefile.test
sugarchain-qt_test
# Resources cpp
qrc_*.cpp
# Mac specific
.DS_Store
build
#lcov
*.gcno
*.gcda
/*.info
test_sugarchain.coverage/
total.coverage/
coverage_percent.txt
#build tests
linux-coverage-build
linux-build
win32-build
test/config.ini
test/cache/*
!src/leveldb*/Makefile
/doc/doxygen/
libbitcoinconsensus.pc
contrib/devtools/split-debug.sh
# cryptozeny tools
init.sh
# linearlize (bootstrap)
contrib/linearize/hashlist.txt
# Berkeley DB (./contrib/install_db4.sh `pwd`)
db-4.8.30.NC.tar.gz
/db4/
================================================
FILE: .travis.yml
================================================
sudo: required
dist: trusty
os: linux
language: minimal
cache:
directories:
- depends/built
- depends/sdk-sources
- $HOME/.ccache
git:
depth: false # full clone for git subtree check, this works around issue #12388
env:
global:
- MAKEJOBS=-j3
- RUN_TESTS=false
- RUN_FUNCTIONAL=false # disabled - test/functional/test_runner.py
- CHECK_DOC=0
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
- CCACHE_SIZE=100M
- CCACHE_TEMPDIR=/tmp/.ccache-temp
- CCACHE_COMPRESS=1
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
- WINEDEBUG=fixme-all
- YESPOWER_PATH=$TRAVIS_BUILD_DIR/src/crypto/yespower-1.0.1
- YESPOWER_OPTION="-fPIE -Wall -O2 -fomit-frame-pointer"
- YESPOWER_MSSE2_32BIT="-msse2"
- WIN_BITCOIN_CONFIG="--disable-shared"
matrix:
# ARM
- >
HOST=arm-linux-gnueabihf
PACKAGES="g++-arm-linux-gnueabihf python3-pip"
DEP_OPTS="NO_QT=1"
CHECK_DOC=1
GOAL="install"
BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
# Win32
- >
HOST=i686-w64-mingw32
DPKG_ADD_ARCH="i386"
DEP_OPTS="NO_QT=1"
PACKAGES="python3 nsis g++-mingw-w64-i686 wine1.6"
RUN_TESTS=true
GOAL="install"
BITCOIN_CONFIG="--enable-reduce-exports $WIN_BITCOIN_CONFIG"
# disabled (slow "make check") # YESPOWER_OPTION="$YESPOWER_OPTION $YESPOWER_MSSE2_32BIT"
# Qt4 & system libs
- >
HOST=x86_64-unknown-linux-gnu
PACKAGES="python3-zmq qt4-dev-tools libssl-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.1++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev xvfb"
NO_DEPENDS=1
NEED_XVFB=1
RUN_TESTS=true
GOAL="install"
BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt4 CPPFLAGS=-DDEBUG_LOCKORDER"
# 32-bit + dash
- >
HOST=i686-pc-linux-gnu
PACKAGES="g++-multilib python3-zmq"
DEP_OPTS="NO_QT=1"
RUN_TESTS=true
GOAL="install"
BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
USE_SHELL="/bin/dash"
# disabled (slow "make check") # YESPOWER_OPTION="$YESPOWER_OPTION $YESPOWER_MSSE2_32BIT"
# Win64
- >
HOST=x86_64-w64-mingw32
DPKG_ADD_ARCH="i386"
DEP_OPTS="NO_QT=1"
PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine1.6"
RUN_TESTS=true
GOAL="install"
BITCOIN_CONFIG="--enable-reduce-exports $WIN_BITCOIN_CONFIG"
# x86_64 Linux (uses qt5 dev package instead of depends Qt to speed up build and avoid timeout)
- >
HOST=x86_64-unknown-linux-gnu
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev"
DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1"
RUN_TESTS=true
GOAL="install"
BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER"
# x86_64 Linux, No wallet
- >
HOST=x86_64-unknown-linux-gnu
PACKAGES="python3"
DEP_OPTS="NO_WALLET=1"
RUN_TESTS=true
GOAL="install"
BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
# Cross-Mac
- >
HOST=x86_64-apple-darwin11
PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev"
BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --enable-werror"
OSX_SDK=10.11
GOAL="deploy"
before_install:
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
install:
- if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then travis_retry pip3 install pathlib2 flake8 --user; fi
before_script:
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then contrib/devtools/commit-script-check.sh $TRAVIS_COMMIT_RANGE; fi
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/git-subtree-check.sh src/crypto/ctaes; fi
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/git-subtree-check.sh src/secp256k1; fi
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/git-subtree-check.sh src/univalue; fi
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/git-subtree-check.sh src/leveldb; fi
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/check-doc.py; fi
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/check-rpc-mappings.py .; fi
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then contrib/devtools/lint-all.sh; fi
- unset CC; unset CXX
- mkdir -p depends/SDKs depends/sdk-sources
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
- if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
- if [ -z "$NO_DEPENDS" ]; then make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS; fi
# Start xvfb if needed, as documented at https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI
- if [ "$NEED_XVFB" = 1 ]; then export DISPLAY=:99.0; /sbin/start-stop-daemon --start --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac; fi
script:
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then while read LINE; do travis_retry gpg --keyserver hkp://subset.pool.sks-keyservers.net --recv-keys $LINE; done < contrib/verify-commits/trusted-keys; fi
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then contrib/verify-commits/verify-commits.sh; fi
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
- if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
- BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
- if [ -z "$NO_DEPENDS" ]; then depends/$HOST/native/bin/ccache --max-size=$CCACHE_SIZE; fi
- test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh
- mkdir build && cd build
- ../configure CFLAGS="-I$YESPOWER_PATH $YESPOWER_OPTION" --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
- make distdir VERSION=$HOST
- cd sugarchain-$HOST
- ./configure CFLAGS="-I$YESPOWER_PATH $YESPOWER_OPTION" --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
- if [ "$RUN_TESTS" = "true" ]; then travis_wait 60 make $MAKEJOBS check VERBOSE=1; fi
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude feature_pruning,feature_dbcrash"; fi
- if [ "$RUN_FUNCTIONAL" = "true" ]; then test/functional/test_runner.py --combinedlogslen=4000 --coverage --quiet ${extended}; fi
after_script:
- echo $TRAVIS_COMMIT_RANGE
- echo $TRAVIS_COMMIT_LOG
================================================
FILE: .tx/config
================================================
[main]
host = https://www.transifex.com
[bitcoin.qt-translation-016x]
file_filter = src/qt/locale/bitcoin_<lang>.ts
source_file = src/qt/locale/bitcoin_en.ts
source_lang = en
================================================
FILE: CONTRIBUTING.md
================================================
Contributing to Bitcoin Core
============================
The Bitcoin Core project operates an open contributor model where anyone is
welcome to contribute towards development in the form of peer review, testing
and patches. This document explains the practical process and guidelines for
contributing.
Firstly in terms of structure, there is no particular concept of "Core
developers" in the sense of privileged people. Open source often naturally
revolves around meritocracy where longer term contributors gain more trust from
the developer community. However, some hierarchy is necessary for practical
purposes. As such there are repository "maintainers" who are responsible for
merging pull requests as well as a "lead maintainer" who is responsible for the
release cycle, overall merging, moderation and appointment of maintainers.
Contributor Workflow
--------------------
The codebase is maintained using the "contributor workflow" where everyone
without exception contributes patch proposals using "pull requests". This
facilitates social contribution, easy testing and peer review.
To contribute a patch, the workflow is as follows:
1. Fork repository
1. Create topic branch
1. Commit patches
The project coding conventions in the [developer notes](doc/developer-notes.md)
must be adhered to.
In general [commits should be atomic](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_commit_convention)
and diffs should be easy to read. For this reason do not mix any formatting
fixes or code moves with actual code changes.
Commit messages should be verbose by default consisting of a short subject line
(50 chars max), a blank line and detailed explanatory text as separate
paragraph(s), unless the title alone is self-explanatory (like "Corrected typo
in init.cpp") in which case a single title line is sufficient. Commit messages should be
helpful to people reading your code in the future, so explain the reasoning for
your decisions. Further explanation [here](http://chris.beams.io/posts/git-commit/).
If a particular commit references another issue, please add the reference. For
example: `refs #1234` or `fixes #4321`. Using the `fixes` or `closes` keywords
will cause the corresponding issue to be closed when the pull request is merged.
Please refer to the [Git manual](https://git-scm.com/doc) for more information
about Git.
- Push changes to your fork
- Create pull request
The title of the pull request should be prefixed by the component or area that
the pull request affects. Valid areas as:
- *Consensus* for changes to consensus critical code
- *Docs* for changes to the documentation
- *Qt* for changes to bitcoin-qt
- *Mining* for changes to the mining code
- *Net* or *P2P* for changes to the peer-to-peer network code
- *RPC/REST/ZMQ* for changes to the RPC, REST or ZMQ APIs
- *Scripts and tools* for changes to the scripts and tools
- *Tests* for changes to the bitcoin unit tests or QA tests
- *Trivial* should **only** be used for PRs that do not change generated
executable code. Notably, refactors (change of function arguments and code
reorganization) and changes in behavior should **not** be marked as trivial.
Examples of trivial PRs are changes to:
- comments
- whitespace
- variable names
- logging and messages
- *Utils and libraries* for changes to the utils and libraries
- *Wallet* for changes to the wallet code
Examples:
Consensus: Add new opcode for BIP-XXXX OP_CHECKAWESOMESIG
Net: Automatically create hidden service, listen on Tor
Qt: Add feed bump button
Trivial: Fix typo in init.cpp
Note that translations should not be submitted as pull requests, please see
[Translation Process](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md)
for more information on helping with translations.
If a pull request is not to be considered for merging (yet), please
prefix the title with [WIP] or use [Tasks Lists](https://help.github.com/articles/basic-writing-and-formatting-syntax/#task-lists)
in the body of the pull request to indicate tasks are pending.
The body of the pull request should contain enough description about what the
patch does together with any justification/reasoning. You should include
references to any discussions (for example other tickets or mailing list
discussions).
At this stage one should expect comments and review from other contributors. You
can add more commits to your pull request by committing them locally and pushing
to your fork until you have satisfied all feedback.
Squashing Commits
---------------------------
If your pull request is accepted for merging, you may be asked by a maintainer
to squash and or [rebase](https://git-scm.com/docs/git-rebase) your commits
before it will be merged. The basic squashing workflow is shown below.
git checkout your_branch_name
git rebase -i HEAD~n
# n is normally the number of commits in the pull
# set commits from 'pick' to 'squash', save and quit
# on the next screen, edit/refine commit messages
# save and quit
git push -f # (force push to GitHub)
If you have problems with squashing (or other workflows with `git`), you can
alternatively enable "Allow edits from maintainers" in the right GitHub
sidebar and ask for help in the pull request.
Please refrain from creating several pull requests for the same change.
Use the pull request that is already open (or was created earlier) to amend
changes. This preserves the discussion and review that happened earlier for
the respective change set.
The length of time required for peer review is unpredictable and will vary from
pull request to pull request.
Pull Request Philosophy
-----------------------
Patchsets should always be focused. For example, a pull request could add a
feature, fix a bug, or refactor code; but not a mixture. Please also avoid super
pull requests which attempt to do too much, are overly large, or overly complex
as this makes review difficult.
### Features
When adding a new feature, thought must be given to the long term technical debt
and maintenance that feature may require after inclusion. Before proposing a new
feature that will require maintenance, please consider if you are willing to
maintain it (including bug fixing). If features get orphaned with no maintainer
in the future, they may be removed by the Repository Maintainer.
### Refactoring
Refactoring is a necessary part of any software project's evolution. The
following guidelines cover refactoring pull requests for the project.
There are three categories of refactoring, code only moves, code style fixes,
code refactoring. In general refactoring pull requests should not mix these
three kinds of activity in order to make refactoring pull requests easy to
review and uncontroversial. In all cases, refactoring PRs must not change the
behaviour of code within the pull request (bugs must be preserved as is).
Project maintainers aim for a quick turnaround on refactoring pull requests, so
where possible keep them short, uncomplex and easy to verify.
Pull requests that refactor the code should not be made by new contributors. It
requires a certain level of experience to know where the code belongs to and to
understand the full ramification (including rebase effort of open pull requests).
Trivial pull requests or pull requests that refactor the code with no clear
benefits may be immediately closed by the maintainers to reduce unnecessary
workload on reviewing.
"Decision Making" Process
-------------------------
The following applies to code changes to the Bitcoin Core project (and related
projects such as libsecp256k1), and is not to be confused with overall Bitcoin
Network Protocol consensus changes.
Whether a pull request is merged into Bitcoin Core rests with the project merge
maintainers and ultimately the project lead.
Maintainers will take into consideration if a patch is in line with the general
principles of the project; meets the minimum standards for inclusion; and will
judge the general consensus of contributors.
In general, all pull requests must:
- Have a clear use case, fix a demonstrable bug or serve the greater good of
the project (for example refactoring for modularisation);
- Be well peer reviewed;
- Have unit tests and functional tests where appropriate;
- Follow code style guidelines ([C++](doc/developer-notes.md), [functional tests](test/functional/README.md));
- Not break the existing test suite;
- Where bugs are fixed, where possible, there should be unit tests
demonstrating the bug and also proving the fix. This helps prevent regression.
Patches that change Bitcoin consensus rules are considerably more involved than
normal because they affect the entire ecosystem and so must be preceded by
extensive mailing list discussions and have a numbered BIP. While each case will
be different, one should be prepared to expend more time and effort than for
other kinds of patches because of increased peer review and consensus building
requirements.
### Peer Review
Anyone may participate in peer review which is expressed by comments in the pull
request. Typically reviewers will review the code for obvious errors, as well as
test out the patch set and opine on the technical merits of the patch. Project
maintainers take into account the peer review when determining if there is
consensus to merge a pull request (remember that discussions may have been
spread out over GitHub, mailing list and IRC discussions). The following
language is used within pull-request comments:
- ACK means "I have tested the code and I agree it should be merged";
- NACK means "I disagree this should be merged", and must be accompanied by
sound technical justification (or in certain cases of copyright/patent/licensing
issues, legal justification). NACKs without accompanying reasoning may be
disregarded;
- utACK means "I have not tested the code, but I have reviewed it and it looks
OK, I agree it can be merged";
- Concept ACK means "I agree in the general principle of this pull request";
- Nit refers to trivial, often non-blocking issues.
Reviewers should include the commit hash which they reviewed in their comments.
Project maintainers reserve the right to weigh the opinions of peer reviewers
using common sense judgement and also may weight based on meritocracy: Those
that have demonstrated a deeper commitment and understanding towards the project
(over time) or have clear domain expertise may naturally have more weight, as
one would expect in all walks of life.
Where a patch set affects consensus critical code, the bar will be set much
higher in terms of discussion and peer review requirements, keeping in mind that
mistakes could be very costly to the wider community. This includes refactoring
of consensus critical code.
Where a patch set proposes to change the Bitcoin consensus, it must have been
discussed extensively on the mailing list and IRC, be accompanied by a widely
discussed BIP and have a generally widely perceived technical consensus of being
a worthwhile change based on the judgement of the maintainers.
### Finding Reviewers
As most reviewers are themselves developers with their own projects, the review
process can be quite lengthy, and some amount of patience is required. If you find
that you've been waiting for a pull request to be given attention for several
months, there may be a number of reasons for this, some of which you can do something
about:
- It may be because of a feature freeze due to an upcoming release. During this time,
only bug fixes are taken into consideration. If your pull request is a new feature,
it will not be prioritized until the release is over. Wait for release.
- It may be because the changes you are suggesting do not appeal to people. Rather than
nits and critique, which require effort and means they care enough to spend time on your
contribution, thundering silence is a good sign of widespread (mild) dislike of a given change
(because people don't assume *others* won't actually like the proposal). Don't take
that personally, though! Instead, take another critical look at what you are suggesting
and see if it: changes too much, is too broad, doesn't adhere to the
[developer notes](doc/developer-notes.md), is dangerous or insecure, is messily written, etc.
Identify and address any of the issues you find. Then ask e.g. on IRC if someone could give
their opinion on the concept itself.
- It may be because your code is too complex for all but a few people. And those people
may not have realized your pull request even exists. A great way to find people who
are qualified and care about the code you are touching is the
[Git Blame feature](https://help.github.com/articles/tracing-changes-in-a-file/). Simply
find the person touching the code you are touching before you and see if you can find
them and give them a nudge. Don't be incessant about the nudging though.
- Finally, if all else fails, ask on IRC or elsewhere for someone to give your pull request
a look. If you think you've been waiting an unreasonably long amount of time (month+) for
no particular reason (few lines changed, etc), this is totally fine. Try to return the favor
when someone else is asking for feedback on their code, and universe balances out.
Release Policy
--------------
The project leader is the release manager for each Bitcoin Core release.
Copyright
---------
By contributing to this repository, you agree to license your work under the
MIT license unless specified otherwise in `contrib/debian/copyright` or at
the top of the file itself. Any work contributed where you are not the original
author must contain its license header with the original author(s) and source.
================================================
FILE: COPYING
================================================
The MIT License (MIT)
Copyright (c) 2009-2010 Satoshi Nakamoto
Copyright (c) 2009-2018 The Bitcoin Core developers
Copyright (c) 2013-2019 Alexander Peslyak - Yespower 1.0.1
Copyright (c) 2016-2018 The Zcash developers - DigiShieldZEC
Copyright (c) 2018-2020 The Sugarchain Yumekawa developers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: INSTALL.md
================================================
Building Bitcoin
================
See doc/build-*.md for instructions on building the various
elements of the Bitcoin Core reference implementation of Bitcoin.
================================================
FILE: Makefile.am
================================================
# Copyright (c) 2013-2016 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
ACLOCAL_AMFLAGS = -I build-aux/m4
SUBDIRS = src
if ENABLE_MAN
SUBDIRS += doc/man
endif
.PHONY: deploy FORCE
export PYTHONPATH
if BUILD_BITCOIN_LIBS
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libbitcoinconsensus.pc
endif
BITCOIND_BIN=$(top_builddir)/src/$(BITCOIN_DAEMON_NAME)$(EXEEXT)
BITCOIN_QT_BIN=$(top_builddir)/src/qt/$(BITCOIN_GUI_NAME)$(EXEEXT)
BITCOIN_CLI_BIN=$(top_builddir)/src/$(BITCOIN_CLI_NAME)$(EXEEXT)
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT)
empty :=
space := $(empty) $(empty)
OSX_APP=Sugarchain-Qt.app
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
OSX_DMG = $(OSX_VOLNAME).dmg
OSX_BACKGROUND_SVG=background.svg
OSX_BACKGROUND_IMAGE=background.tiff
OSX_BACKGROUND_IMAGE_DPIS=36 72
OSX_DSSTORE_GEN=$(top_srcdir)/contrib/macdeploy/custom_dsstore.py
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed
OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW
DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md)
DIST_CONTRIB = $(top_srcdir)/contrib/bitcoin-cli.bash-completion \
$(top_srcdir)/contrib/bitcoin-tx.bash-completion \
$(top_srcdir)/contrib/bitcoind.bash-completion \
$(top_srcdir)/contrib/init \
$(top_srcdir)/contrib/install_db4.sh \
$(top_srcdir)/contrib/rpm
DIST_SHARE = \
$(top_srcdir)/share/genbuild.sh \
$(top_srcdir)/share/rpcauth
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
$(top_srcdir)/contrib/devtools/security-check.py
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
$(top_srcdir)/doc/README_windows.txt
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \
$(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_SVG) \
$(OSX_DSSTORE_GEN) \
$(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
$(top_srcdir)/contrib/macdeploy/detached-sig-create.sh
COVERAGE_INFO = baseline.info \
test_bitcoin_filtered.info total_coverage.info \
baseline_filtered.info functional_test.info functional_test_filtered.info \
test_bitcoin_coverage.info test_bitcoin.info
dist-hook:
-$(GIT) archive --format=tar HEAD -- src/clientversion.cpp | $(AMTAR) -C $(top_distdir) -xf -
$(BITCOIN_WIN_INSTALLER): all-recursive
$(MKDIR_P) $(top_builddir)/release
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release
@test -f $(MAKENSIS) && $(MAKENSIS) -V2 $(top_builddir)/share/setup.nsi || \
echo error: could not build $@
@echo built $@
$(OSX_APP)/Contents/PkgInfo:
$(MKDIR_P) $(@D)
@echo "APPL????" > $@
$(OSX_APP)/Contents/Resources/empty.lproj:
$(MKDIR_P) $(@D)
@touch $@
$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST)
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $< $@
$(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS)
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $< $@
$(OSX_APP)/Contents/MacOS/Sugarchain-Qt: $(BITCOIN_QT_BIN)
$(MKDIR_P) $(@D)
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@
$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:
$(MKDIR_P) $(@D)
echo '{ CFBundleDisplayName = "$(PACKAGE_NAME)"; CFBundleName = "$(PACKAGE_NAME)"; }' > $@
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
$(OSX_APP)/Contents/MacOS/Sugarchain-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
osx_volname:
echo $(OSX_VOLNAME) >$@
if BUILD_DARWIN
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) $(OSX_BACKGROUND_IMAGE)
$(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -translations-dir=$(QT_TRANSLATION_DIR) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 -volname $(OSX_VOLNAME)
$(OSX_BACKGROUND_IMAGE).png: contrib/macdeploy/$(OSX_BACKGROUND_SVG)
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 36 -p 36 -o $@
$(OSX_BACKGROUND_IMAGE)@2x.png: contrib/macdeploy/$(OSX_BACKGROUND_SVG)
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 72 -p 72 -o $@
$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE).png $(OSX_BACKGROUND_IMAGE)@2x.png
tiffutil -cathidpicheck $^ -out $@
deploydir: $(OSX_DMG)
else
APP_DIST_DIR=$(top_builddir)/dist
APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE) $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/Applications
$(APP_DIST_DIR)/Applications:
@rm -f $@
@cd $(@D); $(LN_S) /Applications $(@F)
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Sugarchain-Qt
$(OSX_DMG): $(APP_DIST_EXTRAS)
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist
dpi%.$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_SVG)
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d $* -p $* | $(IMAGEMAGICK_CONVERT) - $@
OSX_BACKGROUND_IMAGE_DPIFILES := $(foreach dpi,$(OSX_BACKGROUND_IMAGE_DPIS),dpi$(dpi).$(OSX_BACKGROUND_IMAGE))
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE_DPIFILES)
$(MKDIR_P) $(@D)
$(TIFFCP) -c none $(OSX_BACKGROUND_IMAGE_DPIFILES) $@
$(APP_DIST_DIR)/.DS_Store: $(OSX_DSSTORE_GEN)
$(PYTHON) $< "$@" "$(OSX_VOLNAME)"
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Sugarchain-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2
deploydir: $(APP_DIST_EXTRAS)
endif
if TARGET_DARWIN
appbundle: $(OSX_APP_BUILT)
deploy: $(OSX_DMG)
endif
if TARGET_WINDOWS
deploy: $(BITCOIN_WIN_INSTALLER)
endif
$(BITCOIN_QT_BIN): FORCE
$(MAKE) -C src qt/$(@F)
$(BITCOIND_BIN): FORCE
$(MAKE) -C src $(@F)
$(BITCOIN_CLI_BIN): FORCE
$(MAKE) -C src $(@F)
if USE_LCOV
LCOV_FILTER_PATTERN=-p "/usr/include/" -p "src/leveldb/" -p "src/bench/" -p "src/univalue" -p "src/crypto/ctaes" -p "src/secp256k1"
baseline.info:
$(LCOV) -c -i -d $(abs_builddir)/src -o $@
baseline_filtered.info: baseline.info
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
test_bitcoin.info: baseline_filtered.info
$(MAKE) -C src/ check
$(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src -t test_bitcoin -o $@
$(LCOV) -z $(LCOV_OPTS) -d $(abs_builddir)/src
test_bitcoin_filtered.info: test_bitcoin.info
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
functional_test.info: test_bitcoin_filtered.info
-@TIMEOUT=15 test/functional/test_runner.py $(EXTENDED_FUNCTIONAL_TESTS)
$(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src --t functional-tests -o $@
$(LCOV) -z $(LCOV_OPTS) -d $(abs_builddir)/src
functional_test_filtered.info: functional_test.info
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
test_bitcoin_coverage.info: baseline_filtered.info test_bitcoin_filtered.info
$(LCOV) -a $(LCOV_OPTS) baseline_filtered.info -a test_bitcoin_filtered.info -o $@
total_coverage.info: test_bitcoin_filtered.info functional_test_filtered.info
$(LCOV) -a $(LCOV_OPTS) baseline_filtered.info -a test_bitcoin_filtered.info -a functional_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
test_bitcoin.coverage/.dirstamp: test_bitcoin_coverage.info
$(GENHTML) -s $(LCOV_OPTS) $< -o $(@D)
@touch $@
total.coverage/.dirstamp: total_coverage.info
$(GENHTML) -s $(LCOV_OPTS) $< -o $(@D)
@touch $@
cov: test_bitcoin.coverage/.dirstamp total.coverage/.dirstamp
endif
dist_noinst_SCRIPTS = autogen.sh
EXTRA_DIST = $(DIST_SHARE) test/functional/test_runner.py test/functional $(DIST_CONTRIB) $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING) $(BIN_CHECKS)
EXTRA_DIST += \
test/util/bitcoin-util-test.py \
test/util/data/bitcoin-util-test.json \
test/util/data/blanktxv1.hex \
test/util/data/blanktxv1.json \
test/util/data/blanktxv2.hex \
test/util/data/blanktxv2.json \
test/util/data/tt-delin1-out.hex \
test/util/data/tt-delin1-out.json \
test/util/data/tt-delout1-out.hex \
test/util/data/tt-delout1-out.json \
test/util/data/tt-locktime317000-out.hex \
test/util/data/tt-locktime317000-out.json \
test/util/data/tx394b54bb.hex \
test/util/data/txcreate1.hex \
test/util/data/txcreate1.json \
test/util/data/txcreate2.hex \
test/util/data/txcreate2.json \
test/util/data/txcreatedata1.hex \
test/util/data/txcreatedata1.json \
test/util/data/txcreatedata2.hex \
test/util/data/txcreatedata2.json \
test/util/data/txcreatedata_seq0.hex \
test/util/data/txcreatedata_seq0.json \
test/util/data/txcreatedata_seq1.hex \
test/util/data/txcreatedata_seq1.json \
test/util/data/txcreatemultisig1.hex \
test/util/data/txcreatemultisig1.json \
test/util/data/txcreatemultisig2.hex \
test/util/data/txcreatemultisig2.json \
test/util/data/txcreatemultisig3.hex \
test/util/data/txcreatemultisig3.json \
test/util/data/txcreatemultisig4.hex \
test/util/data/txcreatemultisig4.json \
test/util/data/txcreatemultisig5.json \
test/util/data/txcreateoutpubkey1.hex \
test/util/data/txcreateoutpubkey1.json \
test/util/data/txcreateoutpubkey2.hex \
test/util/data/txcreateoutpubkey2.json \
test/util/data/txcreateoutpubkey3.hex \
test/util/data/txcreateoutpubkey3.json \
test/util/data/txcreatescript1.hex \
test/util/data/txcreatescript1.json \
test/util/data/txcreatescript2.hex \
test/util/data/txcreatescript2.json \
test/util/data/txcreatescript3.hex \
test/util/data/txcreatescript3.json \
test/util/data/txcreatescript4.hex \
test/util/data/txcreatescript4.json \
test/util/data/txcreatesignv1.hex \
test/util/data/txcreatesignv1.json \
test/util/data/txcreatesignv2.hex
CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER)
.INTERMEDIATE: $(COVERAGE_INFO)
DISTCHECK_CONFIGURE_FLAGS = --enable-man
clean-local:
rm -rf coverage_percent.txt test_bitcoin.coverage/ total.coverage/ test/tmp/ cache/ $(OSX_APP)
rm -rf test/functional/__pycache__ test/functional/test_framework/__pycache__ test/cache
================================================
FILE: README.md
================================================
Sugarchain Yumekawa
===================
[](https://travis-ci.org/sugarchain-project/sugarchain)

https://sugarchain.org
The Meaning of Yumekawa
-----------------------
Sugarchain's first node software is called `Yumekawa (夢川)`. It can be translated in some ways.
- "Yume (夢)" means dream and "Kawa (川)" means river. So its `Dream River` in japanese.
- The second letter "Kawa" stands for "Kawaii (可愛い)". In this case the meaning is `Dreamy Cute`.
- Also Yumekawa is replaces the word `Core` (ie: Bitcoin Core). We think it sounds a bit centralized.
License
-------
Sugarchain Yumekawa is released under the terms of the MIT license. See [COPYING](COPYING) for more
information or see https://opensource.org/licenses/MIT.
- Copyright (c) 2009-2010 Satoshi Nakamoto
- Copyright (c) 2009-2018 The Bitcoin Core developers
- Copyright (c) 2013-2019 Alexander Peslyak - Yespower 1.0.1
- Copyright (c) 2016-2018 The Zcash developers - DigiShieldZEC
- Copyright (c) 2018-2020 The Sugarchain Yumekawa developers
Minimum Requirement
-------------------
- CPU: 1 Core
- RAM: 2048 MB (at least 3 GB [swap](https://github.com/sugarchain-project/doc/blob/master/swap.md))
- DISK: HDD 5 GB
Depends on Bitcoin Core
-----------------------
Exactly the same as dependencies of [Bitcoin Core v0.16.3](https://github.com/bitcoin/bitcoin/tree/49e34e288005a5b144a642e197b628396f5a0765).
- Debian 10 (Recommended, No PPA)
```bash
sudo apt-get install -y \
software-properties-common build-essential libtool autotools-dev automake pkg-config \
libssl-dev libevent-dev bsdmainutils libboost-all-dev \
libminiupnpc-dev libzmq3-dev libqt5gui5 libqt5core5a \
libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev \
protobuf-compiler libqrencode-dev help2man
```
- PPA is *only* for Ubuntu. No `libdb4.8-dev` and `libdb4.8++-dev` packages on Debian.
- <details><summary>Old Ubuntu</summary>
* Ubuntu 16.04
```bash
sudo add-apt-repository -y ppa:bitcoin/bitcoin && \
sudo apt-get update && \
sudo apt-get install -y \
libdb4.8-dev libdb4.8++-dev \
software-properties-common build-essential libtool autotools-dev automake pkg-config \
libssl-dev libevent-dev bsdmainutils libboost-all-dev \
libminiupnpc-dev libzmq3-dev libqt5gui5 libqt5core5a \
libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev \
protobuf-compiler libqrencode-dev help2man
```
* Ubuntu 18.04+
```bash
sudo add-apt-repository -y ppa:luke-jr/bitcoincore && \
sudo apt-get update && \
sudo apt-get install -y \
libdb4.8-dev libdb4.8++-dev \
software-properties-common build-essential libtool autotools-dev automake pkg-config \
libssl-dev libevent-dev bsdmainutils libboost-all-dev \
libminiupnpc-dev libzmq3-dev libqt5gui5 libqt5core5a \
libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev \
protobuf-compiler libqrencode-dev help2man
```
</details>
Build
-----
- Debian 10+ (Recommended, No PPA)
```bash
./autogen.sh && \
./contrib/install_db4.sh `pwd` && \
export BDB_PREFIX=$PWD/db4 && \
./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include" && \
make -j$(nproc) && \
make check -j$(nproc)
```
- (optional) Following can be deleted `rm -rf db4/ && rm -f db-4.8.30.NC.tar.gz`
- <details><summary>Old Ubuntu</summary>
* Ubuntu 16.04+
```bash
./autogen.sh && \
./configure && \
make -j$(nproc) && \
make check -j$(nproc)
```
</details>
Options after Build
-------------------
- (optional) Reduce binary size using strip (about 90% file size reduction)
```bash
strip ./src/sugarchain-cli && \
strip ./src/sugarchaind && \
strip ./src/qt/sugarchain-qt && \
strip ./src/sugarchain-tx && \
strip ./src/test/test_sugarchain
```
- (optional) After bump version on `configure.ac`, update binary docs (manpages) using help2man `.1` files
```bash
make -j$(nproc) && ./contrib/devtools/gen-manpages.sh
```
- (optional) build for Windows and OSX you may need `--disable-shared` option with make.
- (optional) Add seeds/nodes from [DNSSEED](https://github.com/sugarchain-project/sugarchain-seeder)
https://github.com/sugarchain-project/sugarchain/tree/master-v0.16.3/contrib/seeds
Unit Test
---------
All Sugarchain Yumekawa developers should execute this unit test. Some updates may break these tests in some occasions.
- Test All
```bash
./src/test/test_sugarchain test_bitcoin --log_level=test_suite
```
- (optional) Test Partially: ie `blockencodings_tests`
```bash
./src/test/test_sugarchain test_bitcoin --log_level=test_suite --run_test=blockencodings_tests
```
- (optional) Test QT (GUI)
```bash
./src/qt/test/test_sugarchain-qt
```
Run
---
The options `-rpcuser`, `-rpcpassword`, and `-printtoconsole` are optional. `server=1` needed by RPC servers or cpuminer when solo-mining.
- Mainnet: debug mode: `net` for Network
> ./src/qt/sugarchain-qt -server=1 -rpcuser=rpcuser -rpcpassword=rpcpassword **-debug=net** -printtoconsole
- Testnet
> ./src/qt/sugarchain-qt **-testnet**
- Regtest
> ./src/qt/sugarchain-qt **-regtest**
- Reference
https://en.bitcoin.it/w/index.php?title=Running_Bitcoin&oldid=66644
CLI
---
- `-prunedebuglogfile`: Prune (limit) filesize of debug.log
> ./src/qt/sugarchain-qt -prunedebuglogfile
> 2020-09-15 19:41:34 DEBUG.LOG PRUNED at 10000063
Known Issues
------------
- Transaction too large:
* This is a part of BTC, and hopefully will be fixed in next *Taproot* Softfork.
- Slow update balance on wallet:
* This slow is a part of BTC.
* Update total balance *every minute (12 blocks)* interval.
* A workaround at this moment. [source](https://github.com/sugarchain-project/sugarchain/commit/72436c90b29844cf507895df053103f9b6840776#diff-2e3836af182cfb375329c3463ffd91f8)
- Poor performance on ARM CPUs (32/64-Bit):
* No ARM optimization for Yespower yet.
- Poor performance on 32-Bit OS:
* No SSE2 optimization for Yespower yet. [source](https://github.com/sugarchain-project/sugarchain/blob/d977987a83aba115d50a9130f0d7914330d1bc75/src/crypto/yespower-1.0.1/yespower-opt.c#L59)
- Slow startup on low memory machines:
* Startup can take up to some hours on 1cpu 1024ram (+swap 3GB) VPS.
* Workaround is just increase RAM at least 2 GB.
Release Process using GITIAN
----------------------------
- All Sugarchain Yumekawa developers should do following GITIAN release process. It's the safest way to distribute binaries to people.
- Please use GITIAN release with checking PGP signature, or compile it yourself on your own machine.
https://gist.github.com/cryptozeny/3501c77750541208b9dd1a9e9719fc53
================================================
FILE: autogen.sh
================================================
#!/bin/sh
# Copyright (c) 2013-2016 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
set -e
srcdir="$(dirname $0)"
cd "$srcdir"
if [ -z ${LIBTOOLIZE} ] && GLIBTOOLIZE="`which glibtoolize 2>/dev/null`"; then
LIBTOOLIZE="${GLIBTOOLIZE}"
export LIBTOOLIZE
fi
which autoreconf >/dev/null || \
(echo "configuration failed, please install autoconf first" && exit 1)
autoreconf --install --force --warnings=all
================================================
FILE: build-aux/m4/ax_boost_base.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_boost_base.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_BOOST_BASE([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
#
# DESCRIPTION
#
# Test for the Boost C++ libraries of a particular version (or newer)
#
# If no path to the installed boost library is given the macro searchs
# under /usr, /usr/local, /opt and /opt/local and evaluates the
# $BOOST_ROOT environment variable. Further documentation is available at
# <http://randspringer.de/boost/index.html>.
#
# This macro calls:
#
# AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
#
# And sets:
#
# HAVE_BOOST
#
# LICENSE
#
# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
# Copyright (c) 2009 Peter Adolphs
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 27
AC_DEFUN([AX_BOOST_BASE],
[
AC_ARG_WITH([boost],
[AS_HELP_STRING([--with-boost@<:@=ARG@:>@],
[use Boost library from a standard location (ARG=yes),
from the specified location (ARG=<path>),
or disable it (ARG=no)
@<:@ARG=yes@:>@ ])],
[
if test "$withval" = "no"; then
want_boost="no"
elif test "$withval" = "yes"; then
want_boost="yes"
ac_boost_path=""
else
want_boost="yes"
ac_boost_path="$withval"
fi
],
[want_boost="yes"])
AC_ARG_WITH([boost-libdir],
AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
[Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located.]),
[
if test -d "$withval"
then
ac_boost_lib_path="$withval"
else
AC_MSG_ERROR(--with-boost-libdir expected directory name)
fi
],
[ac_boost_lib_path=""]
)
if test "x$want_boost" = "xyes"; then
boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
if test "x$boost_lib_version_req_sub_minor" = "x" ; then
boost_lib_version_req_sub_minor="0"
fi
WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
succeeded=no
dnl On 64-bit systems check for system libraries in both lib64 and lib.
dnl The former is specified by FHS, but e.g. Debian does not adhere to
dnl this (as it rises problems for generic multi-arch support).
dnl The last entry in the list is chosen by default when no libraries
dnl are found, e.g. when only header-only libraries are installed!
libsubdirs="lib"
ax_arch=`uname -m`
case $ax_arch in
x86_64)
libsubdirs="lib64 libx32 lib lib64"
;;
ppc64|s390x|sparc64|aarch64|ppc64le)
libsubdirs="lib64 lib lib64"
;;
esac
dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give
dnl them priority over the other paths since, if libs are found there, they
dnl are almost assuredly the ones desired.
AC_REQUIRE([AC_CANONICAL_HOST])
libsubdirs="lib/${host_cpu}-${host_os} $libsubdirs"
case ${host_cpu} in
i?86)
libsubdirs="lib/i386-${host_os} $libsubdirs"
;;
esac
dnl some arches may advertise a cpu type that doesn't line up with their
dnl prefix's cpu type. For example, uname may report armv7l while libs are
dnl installed to /usr/lib/arm-linux-gnueabihf. Try getting the compiler's
dnl value for an extra chance of finding the correct path.
libsubdirs="lib/`$CXX -dumpmachine 2>/dev/null` $libsubdirs"
dnl first we check the system location for boost libraries
dnl this location ist chosen if boost libraries are installed with the --layout=system option
dnl or if you install boost with RPM
if test "$ac_boost_path" != ""; then
BOOST_CPPFLAGS="-I$ac_boost_path/include"
for ac_boost_path_tmp in $libsubdirs; do
if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
break
fi
done
elif test "$cross_compiling" != yes; then
for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
for libsubdir in $libsubdirs ; do
if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
done
BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
break;
fi
done
fi
dnl overwrite ld flags if we have required special directory with
dnl --with-boost-libdir parameter
if test "$ac_boost_lib_path" != ""; then
BOOST_LDFLAGS="-L$ac_boost_lib_path"
fi
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
AC_REQUIRE([AC_PROG_CXX])
AC_LANG_PUSH(C++)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@%:@include <boost/version.hpp>
]], [[
#if BOOST_VERSION >= $WANT_BOOST_VERSION
// Everything is okay
#else
# error Boost version is too old
#endif
]])],[
AC_MSG_RESULT(yes)
succeeded=yes
found_system=yes
],[
])
AC_LANG_POP([C++])
dnl if we found no boost with system layout we search for boost libraries
dnl built and installed without the --layout=system option or for a staged(not installed) version
if test "x$succeeded" != "xyes"; then
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
BOOST_CPPFLAGS=
BOOST_LDFLAGS=
_version=0
if test "$ac_boost_path" != ""; then
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
V_CHECK=`expr $_version_tmp \> $_version`
if test "$V_CHECK" = "1" ; then
_version=$_version_tmp
fi
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
done
dnl if nothing found search for layout used in Windows distributions
if test -z "$BOOST_CPPFLAGS"; then
if test -d "$ac_boost_path/boost" && test -r "$ac_boost_path/boost"; then
BOOST_CPPFLAGS="-I$ac_boost_path"
fi
fi
fi
else
if test "$cross_compiling" != yes; then
for ac_boost_path in /usr /usr/local /opt /opt/local ; do
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
V_CHECK=`expr $_version_tmp \> $_version`
if test "$V_CHECK" = "1" ; then
_version=$_version_tmp
best_path=$ac_boost_path
fi
done
fi
done
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
if test "$ac_boost_lib_path" = ""; then
for libsubdir in $libsubdirs ; do
if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
done
BOOST_LDFLAGS="-L$best_path/$libsubdir"
fi
fi
if test "x$BOOST_ROOT" != "x"; then
for libsubdir in $libsubdirs ; do
if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
done
if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
V_CHECK=`expr $stage_version_shorten \>\= $_version`
if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
BOOST_CPPFLAGS="-I$BOOST_ROOT"
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
fi
fi
fi
fi
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
AC_LANG_PUSH(C++)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@%:@include <boost/version.hpp>
]], [[
#if BOOST_VERSION >= $WANT_BOOST_VERSION
// Everything is okay
#else
# error Boost version is too old
#endif
]])],[
AC_MSG_RESULT(yes)
succeeded=yes
found_system=yes
],[
])
AC_LANG_POP([C++])
fi
if test "$succeeded" != "yes" ; then
if test "$_version" = "0" ; then
AC_MSG_NOTICE([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
else
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
fi
# execute ACTION-IF-NOT-FOUND (if present):
ifelse([$3], , :, [$3])
else
AC_SUBST(BOOST_CPPFLAGS)
AC_SUBST(BOOST_LDFLAGS)
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
# execute ACTION-IF-FOUND (if present):
ifelse([$2], , :, [$2])
fi
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
fi
])
================================================
FILE: build-aux/m4/ax_boost_chrono.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_boost_chrono.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_BOOST_CHRONO
#
# DESCRIPTION
#
# Test for System library from the Boost C++ libraries. The macro requires
# a preceding call to AX_BOOST_BASE. Further documentation is available at
# <http://randspringer.de/boost/index.html>.
#
# This macro calls:
#
# AC_SUBST(BOOST_CHRONO_LIB)
#
# And sets:
#
# HAVE_BOOST_CHRONO
#
# LICENSE
#
# Copyright (c) 2012 Xiyue Deng <manphiz@gmail.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 1
AC_DEFUN([AX_BOOST_CHRONO],
[
AC_ARG_WITH([boost-chrono],
AS_HELP_STRING([--with-boost-chrono@<:@=special-lib@:>@],
[use the Chrono library from boost - it is possible to specify a certain library for the linker
e.g. --with-boost-chrono=boost_chrono-gcc-mt ]),
[
if test "$withval" = "no"; then
want_boost="no"
elif test "$withval" = "yes"; then
want_boost="yes"
ax_boost_user_chrono_lib=""
else
want_boost="yes"
ax_boost_user_chrono_lib="$withval"
fi
],
[want_boost="yes"]
)
if test "x$want_boost" = "xyes"; then
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_BUILD])
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
AC_CACHE_CHECK(whether the Boost::Chrono library is available,
ax_cv_boost_chrono,
[AC_LANG_PUSH([C++])
CXXFLAGS_SAVE=$CXXFLAGS
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/chrono.hpp>]],
[[boost::chrono::system_clock::time_point time;]])],
ax_cv_boost_chrono=yes, ax_cv_boost_chrono=no)
CXXFLAGS=$CXXFLAGS_SAVE
AC_LANG_POP([C++])
])
if test "x$ax_cv_boost_chrono" = "xyes"; then
AC_SUBST(BOOST_CPPFLAGS)
AC_DEFINE(HAVE_BOOST_CHRONO,,[define if the Boost::Chrono library is available])
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
LDFLAGS_SAVE=$LDFLAGS
if test "x$ax_boost_user_chrono_lib" = "x"; then
ax_lib=
for libextension in `ls $BOOSTLIBDIR/libboost_chrono*.so* $BOOSTLIBDIR/libboost_chrono*.dylib* $BOOSTLIBDIR/libboost_chrono*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_chrono.*\)\.so.*$;\1;' -e 's;^lib\(boost_chrono.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_chrono.*\)\.a.*$;\1;'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_CHRONO_LIB="-l$ax_lib"; AC_SUBST(BOOST_CHRONO_LIB) link_chrono="yes"; break],
[link_chrono="no"])
done
if test "x$link_chrono" != "xyes"; then
for libextension in `ls $BOOSTLIBDIR/boost_chrono*.dll* $BOOSTLIBDIR/boost_chrono*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_chrono.*\)\.dll.*$;\1;' -e 's;^\(boost_chrono.*\)\.a.*$;\1;'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_CHRONO_LIB="-l$ax_lib"; AC_SUBST(BOOST_CHRONO_LIB) link_chrono="yes"; break],
[link_chrono="no"])
done
fi
else
for ax_lib in $ax_boost_user_chrono_lib boost_chrono-$ax_boost_user_chrono_lib; do
AC_CHECK_LIB($ax_lib, exit,
[BOOST_CHRONO_LIB="-l$ax_lib"; AC_SUBST(BOOST_CHRONO_LIB) link_chrono="yes"; break],
[link_chrono="no"])
done
fi
if test "x$ax_lib" = "x"; then
AC_MSG_ERROR(Could not find a version of the boost_chrono library!)
fi
if test "x$link_chrono" = "xno"; then
AC_MSG_ERROR(Could not link against $ax_lib !)
fi
fi
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
fi
])
================================================
FILE: build-aux/m4/ax_boost_filesystem.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_boost_filesystem.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_BOOST_FILESYSTEM
#
# DESCRIPTION
#
# Test for Filesystem library from the Boost C++ libraries. The macro
# requires a preceding call to AX_BOOST_BASE. Further documentation is
# available at <http://randspringer.de/boost/index.html>.
#
# This macro calls:
#
# AC_SUBST(BOOST_FILESYSTEM_LIB)
#
# And sets:
#
# HAVE_BOOST_FILESYSTEM
#
# LICENSE
#
# Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
# Copyright (c) 2009 Michael Tindal
# Copyright (c) 2009 Roman Rybalko <libtorrent@romanr.info>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 26
AC_DEFUN([AX_BOOST_FILESYSTEM],
[
AC_ARG_WITH([boost-filesystem],
AS_HELP_STRING([--with-boost-filesystem@<:@=special-lib@:>@],
[use the Filesystem library from boost - it is possible to specify a certain library for the linker
e.g. --with-boost-filesystem=boost_filesystem-gcc-mt ]),
[
if test "$withval" = "no"; then
want_boost="no"
elif test "$withval" = "yes"; then
want_boost="yes"
ax_boost_user_filesystem_lib=""
else
want_boost="yes"
ax_boost_user_filesystem_lib="$withval"
fi
],
[want_boost="yes"]
)
if test "x$want_boost" = "xyes"; then
AC_REQUIRE([AC_PROG_CC])
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
LIBS_SAVED=$LIBS
LIBS="$LIBS $BOOST_SYSTEM_LIB"
export LIBS
AC_CACHE_CHECK(whether the Boost::Filesystem library is available,
ax_cv_boost_filesystem,
[AC_LANG_PUSH([C++])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/filesystem/path.hpp>]],
[[using namespace boost::filesystem;
path my_path( "foo/bar/data.txt" );
return 0;]])],
ax_cv_boost_filesystem=yes, ax_cv_boost_filesystem=no)
AC_LANG_POP([C++])
])
if test "x$ax_cv_boost_filesystem" = "xyes"; then
AC_DEFINE(HAVE_BOOST_FILESYSTEM,,[define if the Boost::Filesystem library is available])
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
ax_lib=
if test "x$ax_boost_user_filesystem_lib" = "x"; then
for libextension in `ls -r $BOOSTLIBDIR/libboost_filesystem* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
[link_filesystem="no"])
done
if test "x$link_filesystem" != "xyes"; then
for libextension in `ls -r $BOOSTLIBDIR/boost_filesystem* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
[link_filesystem="no"])
done
fi
else
for ax_lib in $ax_boost_user_filesystem_lib boost_filesystem-$ax_boost_user_filesystem_lib; do
AC_CHECK_LIB($ax_lib, exit,
[BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
[link_filesystem="no"])
done
fi
if test "x$ax_lib" = "x"; then
AC_MSG_ERROR(Could not find a version of the boost_filesystem library!)
fi
if test "x$link_filesystem" != "xyes"; then
AC_MSG_ERROR(Could not link against $ax_lib !)
fi
fi
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
LIBS="$LIBS_SAVED"
fi
])
================================================
FILE: build-aux/m4/ax_boost_program_options.m4
================================================
# ============================================================================
# http://www.gnu.org/software/autoconf-archive/ax_boost_program_options.html
# ============================================================================
#
# SYNOPSIS
#
# AX_BOOST_PROGRAM_OPTIONS
#
# DESCRIPTION
#
# Test for program options library from the Boost C++ libraries. The macro
# requires a preceding call to AX_BOOST_BASE. Further documentation is
# available at <http://randspringer.de/boost/index.html>.
#
# This macro calls:
#
# AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB)
#
# And sets:
#
# HAVE_BOOST_PROGRAM_OPTIONS
#
# LICENSE
#
# Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 24
AC_DEFUN([AX_BOOST_PROGRAM_OPTIONS],
[
AC_ARG_WITH([boost-program-options],
AS_HELP_STRING([--with-boost-program-options@<:@=special-lib@:>@],
[use the program options library from boost - it is possible to specify a certain library for the linker
e.g. --with-boost-program-options=boost_program_options-gcc-mt-1_33_1 ]),
[
if test "$withval" = "no"; then
want_boost="no"
elif test "$withval" = "yes"; then
want_boost="yes"
ax_boost_user_program_options_lib=""
else
want_boost="yes"
ax_boost_user_program_options_lib="$withval"
fi
],
[want_boost="yes"]
)
if test "x$want_boost" = "xyes"; then
AC_REQUIRE([AC_PROG_CC])
export want_boost
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
AC_CACHE_CHECK([whether the Boost::Program_Options library is available],
ax_cv_boost_program_options,
[AC_LANG_PUSH(C++)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/program_options/errors.hpp>
]],
[[boost::program_options::error err("Error message");
return 0;]])],
ax_cv_boost_program_options=yes, ax_cv_boost_program_options=no)
AC_LANG_POP([C++])
])
if test "$ax_cv_boost_program_options" = yes; then
AC_DEFINE(HAVE_BOOST_PROGRAM_OPTIONS,,[define if the Boost::PROGRAM_OPTIONS library is available])
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
if test "x$ax_boost_user_program_options_lib" = "x"; then
for libextension in `ls $BOOSTLIBDIR/libboost_program_options*.so* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.so.*$;\1;'` `ls $BOOSTLIBDIR/libboost_program_options*.dylib* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.dylib.*$;\1;'` `ls $BOOSTLIBDIR/libboost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.a.*$;\1;'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib"; AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes"; break],
[link_program_options="no"])
done
if test "x$link_program_options" != "xyes"; then
for libextension in `ls $BOOSTLIBDIR/boost_program_options*.dll* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_program_options.*\)\.dll.*$;\1;'` `ls $BOOSTLIBDIR/boost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_program_options.*\)\.a.*$;\1;'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib"; AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes"; break],
[link_program_options="no"])
done
fi
else
for ax_lib in $ax_boost_user_program_options_lib boost_program_options-$ax_boost_user_program_options_lib; do
AC_CHECK_LIB($ax_lib, main,
[BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib"; AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes"; break],
[link_program_options="no"])
done
fi
if test "x$ax_lib" = "x"; then
AC_MSG_ERROR(Could not find a version of the boost_program_options library!)
fi
if test "x$link_program_options" != "xyes"; then
AC_MSG_ERROR([Could not link against [$ax_lib] !])
fi
fi
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
fi
])
================================================
FILE: build-aux/m4/ax_boost_system.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_boost_system.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_BOOST_SYSTEM
#
# DESCRIPTION
#
# Test for System library from the Boost C++ libraries. The macro requires
# a preceding call to AX_BOOST_BASE. Further documentation is available at
# <http://randspringer.de/boost/index.html>.
#
# This macro calls:
#
# AC_SUBST(BOOST_SYSTEM_LIB)
#
# And sets:
#
# HAVE_BOOST_SYSTEM
#
# LICENSE
#
# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
# Copyright (c) 2008 Michael Tindal
# Copyright (c) 2008 Daniel Casimiro <dan.casimiro@gmail.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 18
AC_DEFUN([AX_BOOST_SYSTEM],
[
AC_ARG_WITH([boost-system],
AS_HELP_STRING([--with-boost-system@<:@=special-lib@:>@],
[use the System library from boost - it is possible to specify a certain library for the linker
e.g. --with-boost-system=boost_system-gcc-mt ]),
[
if test "$withval" = "no"; then
want_boost="no"
elif test "$withval" = "yes"; then
want_boost="yes"
ax_boost_user_system_lib=""
else
want_boost="yes"
ax_boost_user_system_lib="$withval"
fi
],
[want_boost="yes"]
)
if test "x$want_boost" = "xyes"; then
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_BUILD])
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
AC_CACHE_CHECK(whether the Boost::System library is available,
ax_cv_boost_system,
[AC_LANG_PUSH([C++])
CXXFLAGS_SAVE=$CXXFLAGS
CXXFLAGS=
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/system/error_code.hpp>]],
[[boost::system::error_category *a = 0;]])],
ax_cv_boost_system=yes, ax_cv_boost_system=no)
CXXFLAGS=$CXXFLAGS_SAVE
AC_LANG_POP([C++])
])
if test "x$ax_cv_boost_system" = "xyes"; then
AC_SUBST(BOOST_CPPFLAGS)
AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available])
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
LDFLAGS_SAVE=$LDFLAGS
if test "x$ax_boost_user_system_lib" = "x"; then
ax_lib=
for libextension in `ls -r $BOOSTLIBDIR/libboost_system* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
[link_system="no"])
done
if test "x$link_system" != "xyes"; then
for libextension in `ls -r $BOOSTLIBDIR/boost_system* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
[link_system="no"])
done
fi
else
for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do
AC_CHECK_LIB($ax_lib, exit,
[BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
[link_system="no"])
done
fi
if test "x$ax_lib" = "x"; then
AC_MSG_ERROR(Could not find a version of the boost_system library!)
fi
if test "x$link_system" = "xno"; then
AC_MSG_ERROR(Could not link against $ax_lib !)
fi
fi
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
fi
])
================================================
FILE: build-aux/m4/ax_boost_thread.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_boost_thread.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_BOOST_THREAD
#
# DESCRIPTION
#
# Test for Thread library from the Boost C++ libraries. The macro requires
# a preceding call to AX_BOOST_BASE. Further documentation is available at
# <http://randspringer.de/boost/index.html>.
#
# This macro calls:
#
# AC_SUBST(BOOST_THREAD_LIB)
#
# And sets:
#
# HAVE_BOOST_THREAD
#
# LICENSE
#
# Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
# Copyright (c) 2009 Michael Tindal
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 27
AC_DEFUN([AX_BOOST_THREAD],
[
AC_ARG_WITH([boost-thread],
AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@],
[use the Thread library from boost - it is possible to specify a certain library for the linker
e.g. --with-boost-thread=boost_thread-gcc-mt ]),
[
if test "$withval" = "no"; then
want_boost="no"
elif test "$withval" = "yes"; then
want_boost="yes"
ax_boost_user_thread_lib=""
else
want_boost="yes"
ax_boost_user_thread_lib="$withval"
fi
],
[want_boost="yes"]
)
if test "x$want_boost" = "xyes"; then
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_BUILD])
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
AC_CACHE_CHECK(whether the Boost::Thread library is available,
ax_cv_boost_thread,
[AC_LANG_PUSH([C++])
CXXFLAGS_SAVE=$CXXFLAGS
if test "x$host_os" = "xsolaris" ; then
CXXFLAGS="-pthreads $CXXFLAGS"
elif test "x$host_os" = "xmingw32" ; then
CXXFLAGS="-mthreads $CXXFLAGS"
else
CXXFLAGS="-pthread $CXXFLAGS"
fi
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/thread/thread.hpp>]],
[[boost::thread_group thrds;
return 0;]])],
ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
CXXFLAGS=$CXXFLAGS_SAVE
AC_LANG_POP([C++])
])
if test "x$ax_cv_boost_thread" = "xyes"; then
if test "x$host_os" = "xsolaris" ; then
BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
elif test "x$host_os" = "xmingw32" ; then
BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
else
BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
fi
AC_SUBST(BOOST_CPPFLAGS)
AC_DEFINE(HAVE_BOOST_THREAD,,[define if the Boost::Thread library is available])
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
LDFLAGS_SAVE=$LDFLAGS
case "x$host_os" in
*bsd* )
LDFLAGS="-pthread $LDFLAGS"
break;
;;
esac
if test "x$ax_boost_user_thread_lib" = "x"; then
ax_lib=
for libextension in `ls -r $BOOSTLIBDIR/libboost_thread* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
[link_thread="no"])
done
if test "x$link_thread" != "xyes"; then
for libextension in `ls -r $BOOSTLIBDIR/boost_thread* 2>/dev/null | sed 's,.*/,,' | sed 's,\..*,,'`; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
[link_thread="no"])
done
fi
else
for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do
AC_CHECK_LIB($ax_lib, exit,
[BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
[link_thread="no"])
done
fi
if test "x$ax_lib" = "x"; then
AC_MSG_ERROR(Could not find a version of the boost_thread library!)
fi
if test "x$link_thread" = "xno"; then
AC_MSG_ERROR(Could not link against $ax_lib !)
else
case "x$host_os" in
*bsd* )
BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
break;
;;
esac
fi
fi
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
fi
])
================================================
FILE: build-aux/m4/ax_boost_unit_test_framework.m4
================================================
# ================================================================================
# http://www.gnu.org/software/autoconf-archive/ax_boost_unit_test_framework.html
# ================================================================================
#
# SYNOPSIS
#
# AX_BOOST_UNIT_TEST_FRAMEWORK
#
# DESCRIPTION
#
# Test for Unit_Test_Framework library from the Boost C++ libraries. The
# macro requires a preceding call to AX_BOOST_BASE. Further documentation
# is available at <http://randspringer.de/boost/index.html>.
#
# This macro calls:
#
# AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
#
# And sets:
#
# HAVE_BOOST_UNIT_TEST_FRAMEWORK
#
# LICENSE
#
# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 19
AC_DEFUN([AX_BOOST_UNIT_TEST_FRAMEWORK],
[
AC_ARG_WITH([boost-unit-test-framework],
AS_HELP_STRING([--with-boost-unit-test-framework@<:@=special-lib@:>@],
[use the Unit_Test_Framework library from boost - it is possible to specify a certain library for the linker
e.g. --with-boost-unit-test-framework=boost_unit_test_framework-gcc ]),
[
if test "$withval" = "no"; then
want_boost="no"
elif test "$withval" = "yes"; then
want_boost="yes"
ax_boost_user_unit_test_framework_lib=""
else
want_boost="yes"
ax_boost_user_unit_test_framework_lib="$withval"
fi
],
[want_boost="yes"]
)
if test "x$want_boost" = "xyes"; then
AC_REQUIRE([AC_PROG_CC])
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
AC_CACHE_CHECK(whether the Boost::Unit_Test_Framework library is available,
ax_cv_boost_unit_test_framework,
[AC_LANG_PUSH([C++])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/test/unit_test.hpp>]],
[[using boost::unit_test::test_suite;
test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" ); return 0;]])],
ax_cv_boost_unit_test_framework=yes, ax_cv_boost_unit_test_framework=no)
AC_LANG_POP([C++])
])
if test "x$ax_cv_boost_unit_test_framework" = "xyes"; then
AC_DEFINE(HAVE_BOOST_UNIT_TEST_FRAMEWORK,,[define if the Boost::Unit_Test_Framework library is available])
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
if test "x$ax_boost_user_unit_test_framework_lib" = "x"; then
saved_ldflags="${LDFLAGS}"
ax_lib=
for monitor_library in `ls $BOOSTLIBDIR/libboost_unit_test_framework*.so* $BOOSTLIBDIR/libboost_unit_test_framework*.dylib* $BOOSTLIBDIR/libboost_unit_test_framework*.a* 2>/dev/null` ; do
if test -r $monitor_library ; then
libextension=`echo $monitor_library | sed 's,.*/,,' | sed -e 's;^lib\(boost_unit_test_framework.*\)\.so.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.a.*$;\1;'`
ax_lib=${libextension}
link_unit_test_framework="yes"
else
link_unit_test_framework="no"
fi
if test "x$link_unit_test_framework" = "xyes"; then
BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"
AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
break
fi
done
if test "x$link_unit_test_framework" != "xyes"; then
for libextension in `ls $BOOSTLIBDIR/boost_unit_test_framework*.dll* $BOOSTLIBDIR/boost_unit_test_framework*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_unit_test_framework.*\)\.dll.*$;\1;' -e 's;^\(boost_unit_test_framework.*\)\.a.*$;\1;'` ; do
ax_lib=${libextension}
AC_CHECK_LIB($ax_lib, exit,
[BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"; AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB) link_unit_test_framework="yes"; break],
[link_unit_test_framework="no"])
done
fi
else
link_unit_test_framework="no"
saved_ldflags="${LDFLAGS}"
for ax_lib in boost_unit_test_framework-$ax_boost_user_unit_test_framework_lib $ax_boost_user_unit_test_framework_lib ; do
if test "x$link_unit_test_framework" = "xyes"; then
break;
fi
for unittest_library in `ls $BOOSTLIBDIR/lib${ax_lib}.so* $BOOSTLIBDIR/lib${ax_lib}.a* 2>/dev/null` ; do
if test -r $unittest_library ; then
libextension=`echo $unittest_library | sed 's,.*/,,' | sed -e 's;^lib\(boost_unit_test_framework.*\)\.so.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.a*$;\1;'`
ax_lib=${libextension}
link_unit_test_framework="yes"
else
link_unit_test_framework="no"
fi
if test "x$link_unit_test_framework" = "xyes"; then
BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"
AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
break
fi
done
done
fi
if test "x$ax_lib" = "x"; then
AC_MSG_ERROR(Could not find a version of the boost_unit_test_framework library!)
fi
if test "x$link_unit_test_framework" != "xyes"; then
AC_MSG_ERROR(Could not link against $ax_lib !)
fi
fi
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
fi
])
================================================
FILE: build-aux/m4/ax_check_compile_flag.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
#
# DESCRIPTION
#
# Check whether the given FLAG works with the current language's compiler
# or gives an error. (Warnings, however, are ignored)
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# If EXTRA-FLAGS is defined, it is added to the current language's default
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
# force the compiler to issue an error when a bad flag is given.
#
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 4
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
AS_VAR_IF(CACHEVAR,yes,
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS
================================================
FILE: build-aux/m4/ax_check_link_flag.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
#
# DESCRIPTION
#
# Check whether the given FLAG works with the linker or gives an error.
# (Warnings, however, are ignored)
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
# when the check is done. The check is thus made with the flags: "LDFLAGS
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
# issue an error when a bad flag is given.
#
# INPUT gives an alternative input source to AC_LINK_IFELSE.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 4
AC_DEFUN([AX_CHECK_LINK_FLAG],
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS $4 $1"
AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
LDFLAGS=$ax_check_save_flags])
AS_VAR_IF(CACHEVAR,yes,
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_LINK_FLAGS
================================================
FILE: build-aux/m4/ax_check_preproc_flag.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_preproc_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_PREPROC_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
#
# DESCRIPTION
#
# Check whether the given FLAG works with the current language's
# preprocessor or gives an error. (Warnings, however, are ignored)
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# If EXTRA-FLAGS is defined, it is added to the preprocessor's default
# flags when the check is done. The check is thus made with the flags:
# "CPPFLAGS EXTRA-FLAGS FLAG". This can for example be used to force the
# preprocessor to issue an error when a bad flag is given.
#
# INPUT gives an alternative input source to AC_PREPROC_IFELSE.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{COMPILE,LINK}_FLAG.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 4
AC_DEFUN([AX_CHECK_PREPROC_FLAG],
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]cppflags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG preprocessor accepts $1], CACHEVAR, [
ax_check_save_flags=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $4 $1"
AC_PREPROC_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
CPPFLAGS=$ax_check_save_flags])
AS_VAR_IF(CACHEVAR,yes,
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_PREPROC_FLAGS
================================================
FILE: build-aux/m4/ax_cxx_compile_stdcxx.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
#
# DESCRIPTION
#
# Check for baseline language coverage in the compiler for the specified
# version of the C++ standard. If necessary, add switches to CXX and
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
# or '14' (for the C++14 standard).
#
# The second argument, if specified, indicates whether you insist on an
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
# -std=c++11). If neither is specified, you get whatever works, with
# preference for an extended mode.
#
# The third argument, if specified 'mandatory' or if left unspecified,
# indicates that baseline support for the specified C++ standard is
# required and that the macro should error out if no mode with that
# support is found. If specified 'optional', then configuration proceeds
# regardless, after defining HAVE_CXX${VERSION} if and only if a
# supporting mode is found.
#
# LICENSE
#
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
# Copyright (c) 2015 Paul Norman <penorman@mac.com>
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 4
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
dnl (serial version number 13).
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
m4_if([$1], [11], [],
[$1], [14], [],
[$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])],
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
m4_if([$2], [], [],
[$2], [ext], [],
[$2], [noext], [],
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
[$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
[$3], [optional], [ax_cxx_compile_cxx$1_required=false],
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
m4_if([$4], [], [ax_cxx_compile_cxx$1_try_default=true],
[$4], [default], [ax_cxx_compile_cxx$1_try_default=true],
[$4], [nodefault], [ax_cxx_compile_cxx$1_try_default=false],
[m4_fatal([invalid fourth argument `$4' to AX_CXX_COMPILE_STDCXX])])
AC_LANG_PUSH([C++])dnl
ac_success=no
m4_if([$4], [nodefault], [], [dnl
AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
ax_cv_cxx_compile_cxx$1,
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
[ax_cv_cxx_compile_cxx$1=yes],
[ax_cv_cxx_compile_cxx$1=no])])
if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
ac_success=yes
fi])
m4_if([$2], [noext], [], [dnl
if test x$ac_success = xno; then
for switch in -std=gnu++$1 -std=gnu++0x; do
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
$cachevar,
[ac_save_CXX="$CXX"
CXX="$CXX $switch"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
[eval $cachevar=yes],
[eval $cachevar=no])
CXX="$ac_save_CXX"])
if eval test x\$$cachevar = xyes; then
CXX="$CXX $switch"
if test -n "$CXXCPP" ; then
CXXCPP="$CXXCPP $switch"
fi
ac_success=yes
break
fi
done
fi])
m4_if([$2], [ext], [], [dnl
if test x$ac_success = xno; then
dnl HP's aCC needs +std=c++11 according to:
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
dnl Cray's crayCC needs "-h std=c++11"
for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
$cachevar,
[ac_save_CXX="$CXX"
CXX="$CXX $switch"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
[eval $cachevar=yes],
[eval $cachevar=no])
CXX="$ac_save_CXX"])
if eval test x\$$cachevar = xyes; then
CXX="$CXX $switch"
if test -n "$CXXCPP" ; then
CXXCPP="$CXXCPP $switch"
fi
ac_success=yes
break
fi
done
fi])
AC_LANG_POP([C++])
if test x$ax_cxx_compile_cxx$1_required = xtrue; then
if test x$ac_success = xno; then
AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
fi
fi
if test x$ac_success = xno; then
HAVE_CXX$1=0
AC_MSG_NOTICE([No compiler with C++$1 support was found])
else
HAVE_CXX$1=1
AC_DEFINE(HAVE_CXX$1,1,
[define if the compiler supports basic C++$1 syntax])
fi
AC_SUBST(HAVE_CXX$1)
])
dnl Test body for checking C++11 support
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
)
dnl Test body for checking C++14 support
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
)
dnl Tests for new features in C++11
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
// If the compiler admits that it is not ready for C++11, why torture it?
// Hopefully, this will speed up the test.
#ifndef __cplusplus
#error "This is not a C++ compiler"
#elif __cplusplus < 201103L
#error "This is not a C++11 compiler"
#else
namespace cxx11
{
namespace test_static_assert
{
template <typename T>
struct check
{
static_assert(sizeof(int) <= sizeof(T), "not big enough");
};
}
namespace test_final_override
{
struct Base
{
virtual void f() {}
};
struct Derived : public Base
{
virtual void f() override {}
};
}
namespace test_double_right_angle_brackets
{
template < typename T >
struct check {};
typedef check<void> single_type;
typedef check<check<void>> double_type;
typedef check<check<check<void>>> triple_type;
typedef check<check<check<check<void>>>> quadruple_type;
}
namespace test_decltype
{
int
f()
{
int a = 1;
decltype(a) b = 2;
return a + b;
}
}
namespace test_type_deduction
{
template < typename T1, typename T2 >
struct is_same
{
static const bool value = false;
};
template < typename T >
struct is_same<T, T>
{
static const bool value = true;
};
template < typename T1, typename T2 >
auto
add(T1 a1, T2 a2) -> decltype(a1 + a2)
{
return a1 + a2;
}
int
test(const int c, volatile int v)
{
static_assert(is_same<int, decltype(0)>::value == true, "");
static_assert(is_same<int, decltype(c)>::value == false, "");
static_assert(is_same<int, decltype(v)>::value == false, "");
auto ac = c;
auto av = v;
auto sumi = ac + av + 'x';
auto sumf = ac + av + 1.0;
static_assert(is_same<int, decltype(ac)>::value == true, "");
static_assert(is_same<int, decltype(av)>::value == true, "");
static_assert(is_same<int, decltype(sumi)>::value == true, "");
static_assert(is_same<int, decltype(sumf)>::value == false, "");
static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
return (sumf > 0.0) ? sumi : add(c, v);
}
}
namespace test_noexcept
{
int f() { return 0; }
int g() noexcept { return 0; }
static_assert(noexcept(f()) == false, "");
static_assert(noexcept(g()) == true, "");
}
namespace test_constexpr
{
template < typename CharT >
unsigned long constexpr
strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
{
return *s ? strlen_c_r(s + 1, acc + 1) : acc;
}
template < typename CharT >
unsigned long constexpr
strlen_c(const CharT *const s) noexcept
{
return strlen_c_r(s, 0UL);
}
static_assert(strlen_c("") == 0UL, "");
static_assert(strlen_c("1") == 1UL, "");
static_assert(strlen_c("example") == 7UL, "");
static_assert(strlen_c("another\0example") == 7UL, "");
}
namespace test_rvalue_references
{
template < int N >
struct answer
{
static constexpr int value = N;
};
answer<1> f(int&) { return answer<1>(); }
answer<2> f(const int&) { return answer<2>(); }
answer<3> f(int&&) { return answer<3>(); }
void
test()
{
int i = 0;
const int c = 0;
static_assert(decltype(f(i))::value == 1, "");
static_assert(decltype(f(c))::value == 2, "");
static_assert(decltype(f(0))::value == 3, "");
}
}
namespace test_uniform_initialization
{
struct test
{
static const int zero {};
static const int one {1};
};
static_assert(test::zero == 0, "");
static_assert(test::one == 1, "");
}
namespace test_lambdas
{
void
test1()
{
auto lambda1 = [](){};
auto lambda2 = lambda1;
lambda1();
lambda2();
}
int
test2()
{
auto a = [](int i, int j){ return i + j; }(1, 2);
auto b = []() -> int { return '0'; }();
auto c = [=](){ return a + b; }();
auto d = [&](){ return c; }();
auto e = [a, &b](int x) mutable {
const auto identity = [](int y){ return y; };
for (auto i = 0; i < a; ++i)
a += b--;
return x + identity(a + b);
}(0);
return a + b + c + d + e;
}
int
test3()
{
const auto nullary = [](){ return 0; };
const auto unary = [](int x){ return x; };
using nullary_t = decltype(nullary);
using unary_t = decltype(unary);
const auto higher1st = [](nullary_t f){ return f(); };
const auto higher2nd = [unary](nullary_t f1){
return [unary, f1](unary_t f2){ return f2(unary(f1())); };
};
return higher1st(nullary) + higher2nd(nullary)(unary);
}
}
namespace test_variadic_templates
{
template <int...>
struct sum;
template <int N0, int... N1toN>
struct sum<N0, N1toN...>
{
static constexpr auto value = N0 + sum<N1toN...>::value;
};
template <>
struct sum<>
{
static constexpr auto value = 0;
};
static_assert(sum<>::value == 0, "");
static_assert(sum<1>::value == 1, "");
static_assert(sum<23>::value == 23, "");
static_assert(sum<1, 2>::value == 3, "");
static_assert(sum<5, 5, 11>::value == 21, "");
static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
}
// http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
// Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
// because of this.
namespace test_template_alias_sfinae
{
struct foo {};
template<typename T>
using member = typename T::member_type;
template<typename T>
void func(...) {}
template<typename T>
void func(member<T>*) {}
void test();
void test() { func<foo>(0); }
}
} // namespace cxx11
#endif // __cplusplus >= 201103L
]])
dnl Tests for new features in C++14
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
// If the compiler admits that it is not ready for C++14, why torture it?
// Hopefully, this will speed up the test.
#ifndef __cplusplus
#error "This is not a C++ compiler"
#elif __cplusplus < 201402L
#error "This is not a C++14 compiler"
#else
namespace cxx14
{
namespace test_polymorphic_lambdas
{
int
test()
{
const auto lambda = [](auto&&... args){
const auto istiny = [](auto x){
return (sizeof(x) == 1UL) ? 1 : 0;
};
const int aretiny[] = { istiny(args)... };
return aretiny[0];
};
return lambda(1, 1L, 1.0f, '1');
}
}
namespace test_binary_literals
{
constexpr auto ivii = 0b0000000000101010;
static_assert(ivii == 42, "wrong value");
}
namespace test_generalized_constexpr
{
template < typename CharT >
constexpr unsigned long
strlen_c(const CharT *const s) noexcept
{
auto length = 0UL;
for (auto p = s; *p; ++p)
++length;
return length;
}
static_assert(strlen_c("") == 0UL, "");
static_assert(strlen_c("x") == 1UL, "");
static_assert(strlen_c("test") == 4UL, "");
static_assert(strlen_c("another\0test") == 7UL, "");
}
namespace test_lambda_init_capture
{
int
test()
{
auto x = 0;
const auto lambda1 = [a = x](int b){ return a + b; };
const auto lambda2 = [a = lambda1(x)](){ return a; };
return lambda2();
}
}
namespace test_digit_seperators
{
constexpr auto ten_million = 100'000'000;
static_assert(ten_million == 100000000, "");
}
namespace test_return_type_deduction
{
auto f(int& x) { return x; }
decltype(auto) g(int& x) { return x; }
template < typename T1, typename T2 >
struct is_same
{
static constexpr auto value = false;
};
template < typename T >
struct is_same<T, T>
{
static constexpr auto value = true;
};
int
test()
{
auto x = 0;
static_assert(is_same<int, decltype(f(x))>::value, "");
static_assert(is_same<int&, decltype(g(x))>::value, "");
return x;
}
}
} // namespace cxx14
#endif // __cplusplus >= 201402L
]])
================================================
FILE: build-aux/m4/ax_gcc_func_attribute.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_gcc_func_attribute.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_GCC_FUNC_ATTRIBUTE(ATTRIBUTE)
#
# DESCRIPTION
#
# This macro checks if the compiler supports one of GCC's function
# attributes; many other compilers also provide function attributes with
# the same syntax. Compiler warnings are used to detect supported
# attributes as unsupported ones are ignored by default so quieting
# warnings when using this macro will yield false positives.
#
# The ATTRIBUTE parameter holds the name of the attribute to be checked.
#
# If ATTRIBUTE is supported define HAVE_FUNC_ATTRIBUTE_<ATTRIBUTE>.
#
# The macro caches its result in the ax_cv_have_func_attribute_<attribute>
# variable.
#
# The macro currently supports the following function attributes:
#
# alias
# aligned
# alloc_size
# always_inline
# artificial
# cold
# const
# constructor
# constructor_priority for constructor attribute with priority
# deprecated
# destructor
# dllexport
# dllimport
# error
# externally_visible
# flatten
# format
# format_arg
# gnu_inline
# hot
# ifunc
# leaf
# malloc
# noclone
# noinline
# nonnull
# noreturn
# nothrow
# optimize
# pure
# unused
# used
# visibility
# warning
# warn_unused_result
# weak
# weakref
#
# Unsuppored function attributes will be tested with a prototype returning
# an int and not accepting any arguments and the result of the check might
# be wrong or meaningless so use with care.
#
# LICENSE
#
# Copyright (c) 2013 Gabriele Svelto <gabriele.svelto@gmail.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 3
AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
AS_VAR_PUSHDEF([ac_var], [ax_cv_have_func_attribute_$1])
AC_CACHE_CHECK([for __attribute__(($1))], [ac_var], [
AC_LINK_IFELSE([AC_LANG_PROGRAM([
m4_case([$1],
[alias], [
int foo( void ) { return 0; }
int bar( void ) __attribute__(($1("foo")));
],
[aligned], [
int foo( void ) __attribute__(($1(32)));
],
[alloc_size], [
void *foo(int a) __attribute__(($1(1)));
],
[always_inline], [
inline __attribute__(($1)) int foo( void ) { return 0; }
],
[artificial], [
inline __attribute__(($1)) int foo( void ) { return 0; }
],
[cold], [
int foo( void ) __attribute__(($1));
],
[const], [
int foo( void ) __attribute__(($1));
],
[constructor_priority], [
int foo( void ) __attribute__((__constructor__(65535/2)));
],
[constructor], [
int foo( void ) __attribute__(($1));
],
[deprecated], [
int foo( void ) __attribute__(($1("")));
],
[destructor], [
int foo( void ) __attribute__(($1));
],
[dllexport], [
__attribute__(($1)) int foo( void ) { return 0; }
],
[dllimport], [
int foo( void ) __attribute__(($1));
],
[error], [
int foo( void ) __attribute__(($1("")));
],
[externally_visible], [
int foo( void ) __attribute__(($1));
],
[flatten], [
int foo( void ) __attribute__(($1));
],
[format], [
int foo(const char *p, ...) __attribute__(($1(printf, 1, 2)));
],
[format_arg], [
char *foo(const char *p) __attribute__(($1(1)));
],
[gnu_inline], [
inline __attribute__(($1)) int foo( void ) { return 0; }
],
[hot], [
int foo( void ) __attribute__(($1));
],
[ifunc], [
int my_foo( void ) { return 0; }
static int (*resolve_foo(void))(void) { return my_foo; }
int foo( void ) __attribute__(($1("resolve_foo")));
],
[leaf], [
__attribute__(($1)) int foo( void ) { return 0; }
],
[malloc], [
void *foo( void ) __attribute__(($1));
],
[noclone], [
int foo( void ) __attribute__(($1));
],
[noinline], [
__attribute__(($1)) int foo( void ) { return 0; }
],
[nonnull], [
int foo(char *p) __attribute__(($1(1)));
],
[noreturn], [
void foo( void ) __attribute__(($1));
],
[nothrow], [
int foo( void ) __attribute__(($1));
],
[optimize], [
__attribute__(($1(3))) int foo( void ) { return 0; }
],
[pure], [
int foo( void ) __attribute__(($1));
],
[unused], [
int foo( void ) __attribute__(($1));
],
[used], [
int foo( void ) __attribute__(($1));
],
[visibility], [
int foo_def( void ) __attribute__(($1("default")));
int foo_hid( void ) __attribute__(($1("hidden")));
int foo_int( void ) __attribute__(($1("internal")));
int foo_pro( void ) __attribute__(($1("protected")));
],
[warning], [
int foo( void ) __attribute__(($1("")));
],
[warn_unused_result], [
int foo( void ) __attribute__(($1));
],
[weak], [
int foo( void ) __attribute__(($1));
],
[weakref], [
static int foo( void ) { return 0; }
static int bar( void ) __attribute__(($1("foo")));
],
[
m4_warn([syntax], [Unsupported attribute $1, the test may fail])
int foo( void ) __attribute__(($1));
]
)], [])
],
dnl GCC doesn't exit with an error if an unknown attribute is
dnl provided but only outputs a warning, so accept the attribute
dnl only if no warning were issued.
[AS_IF([test -s conftest.err],
[AS_VAR_SET([ac_var], [no])],
[AS_VAR_SET([ac_var], [yes])])],
[AS_VAR_SET([ac_var], [no])])
])
AS_IF([test yes = AS_VAR_GET([ac_var])],
[AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_FUNC_ATTRIBUTE_$1), 1,
[Define to 1 if the system has the `$1' function attribute])], [])
AS_VAR_POPDEF([ac_var])
])
================================================
FILE: build-aux/m4/ax_pthread.m4
================================================
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
#
# DESCRIPTION
#
# This macro figures out how to build C programs using POSIX threads. It
# sets the PTHREAD_LIBS output variable to the threads library and linker
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
# flags that are needed. (The user can also force certain compiler
# flags/libs to be tested by setting these environment variables.)
#
# Also sets PTHREAD_CC to any special C compiler that is needed for
# multi-threaded programs (defaults to the value of CC otherwise). (This
# is necessary on AIX to use the special cc_r compiler alias.)
#
# NOTE: You are assumed to not only compile your program with these flags,
# but also to link with them as well. For example, you might link with
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
#
# If you are only building threaded programs, you may wish to use these
# variables in your default LIBS, CFLAGS, and CC:
#
# LIBS="$PTHREAD_LIBS $LIBS"
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# CC="$PTHREAD_CC"
#
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
#
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
# PTHREAD_CFLAGS.
#
# ACTION-IF-FOUND is a list of shell commands to run if a threads library
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
# is not found. If ACTION-IF-FOUND is not specified, the default action
# will define HAVE_PTHREAD.
#
# Please let the authors know if this macro fails on any platform, or if
# you have any other suggestions or comments. This macro was based on work
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
# Alejandro Forero Cuervo to the autoconf macro repository. We are also
# grateful for the helpful feedback of numerous users.
#
# Updated for Autoconf 2.68 by Daniel Richard G.
#
# LICENSE
#
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 23
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
AC_DEFUN([AX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_PROG_SED])
AC_LANG_PUSH([C])
ax_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h
# requires special compiler flags (e.g. on Tru64 or Sequent).
# It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using
# them:
if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
ax_pthread_save_CC="$CC"
ax_pthread_save_CFLAGS="$CFLAGS"
ax_pthread_save_LIBS="$LIBS"
AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
AC_MSG_RESULT([$ax_pthread_ok])
if test "x$ax_pthread_ok" = "xno"; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
CC="$ax_pthread_save_CC"
CFLAGS="$ax_pthread_save_CFLAGS"
LIBS="$ax_pthread_save_LIBS"
fi
# We must check for the threads library under a number of different
# names; the ordering is very important because some systems
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
# libraries is broken (non-POSIX).
# Create a list of thread flags to try. Items starting with a "-" are
# C compiler flags, and other items are library names, except for "none"
# which indicates that we try without any flags at all, and "pthread-config"
# which is a program returning the flags for the Pth emulation library.
ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
# pthreads: AIX (must check this before -lpthread)
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
# (Note: HP C rejects this with "bad form for `-t' option")
# -pthreads: Solaris/gcc (Note: HP C also rejects)
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
# doesn't hurt to check since this sometimes defines pthreads and
# -D_REENTRANT too), HP C (must be checked before -lpthread, which
# is present but should not be used directly; and before -mthreads,
# because the compiler interprets this as "-mt" + "-hreads")
# -mthreads: Mingw32/gcc, Lynx/gcc
# pthread: Linux, etcetera
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
case $host_os in
freebsd*)
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
ax_pthread_flags="-kthread lthread $ax_pthread_flags"
;;
hpux*)
# From the cc(1) man page: "[-mt] Sets various -D flags to enable
# multi-threading and also sets -lpthread."
ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
;;
openedition*)
# IBM z/OS requires a feature-test macro to be defined in order to
# enable POSIX threads at all, so give the user a hint if this is
# not set. (We don't define these ourselves, as they can affect
# other portions of the system API in unpredictable ways.)
AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
[
# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
AX_PTHREAD_ZOS_MISSING
# endif
],
[AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
;;
solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
# tests will erroneously succeed. (N.B.: The stubs are missing
# pthread_cleanup_push, or rather a function called by this macro,
# so we could check for that, but who knows whether they'll stub
# that too in a future libc.) So we'll check first for the
# standard Solaris way of linking pthreads (-mt -lpthread).
ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
;;
esac
# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
AS_IF([test "x$GCC" = "xyes"],
[ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
# The presence of a feature test macro requesting re-entrant function
# definitions is, on some systems, a strong hint that pthreads support is
# correctly enabled
case $host_os in
darwin* | hpux* | linux* | osf* | solaris*)
ax_pthread_check_macro="_REENTRANT"
;;
aix*)
ax_pthread_check_macro="_THREAD_SAFE"
;;
*)
ax_pthread_check_macro="--"
;;
esac
AS_IF([test "x$ax_pthread_check_macro" = "x--"],
[ax_pthread_check_cond=0],
[ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
# Are we compiling with Clang?
AC_CACHE_CHECK([whether $CC is Clang],
[ax_cv_PTHREAD_CLANG],
[ax_cv_PTHREAD_CLANG=no
# Note that Autoconf sets GCC=yes for Clang as well as GCC
if test "x$GCC" = "xyes"; then
AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
[/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
# if defined(__clang__) && defined(__llvm__)
AX_PTHREAD_CC_IS_CLANG
# endif
],
[ax_cv_PTHREAD_CLANG=yes])
fi
])
ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
ax_pthread_clang_warning=no
# Clang needs special handling, because older versions handle the -pthread
# option in a rather... idiosyncratic way
if test "x$ax_pthread_clang" = "xyes"; then
# Clang takes -pthread; it has never supported any other flag
# (Note 1: This will need to be revisited if a system that Clang
# supports has POSIX threads in a separate library. This tends not
# to be the way of modern systems, but it's conceivable.)
# (Note 2: On some systems, notably Darwin, -pthread is not needed
# to get POSIX threads support; the API is always present and
# active. We could reasonably leave PTHREAD_CFLAGS empty. But
# -pthread does define _REENTRANT, and while the Darwin headers
# ignore this macro, third-party headers might not.)
PTHREAD_CFLAGS="-pthread"
PTHREAD_LIBS=
ax_pthread_ok=yes
# However, older versions of Clang make a point of warning the user
# that, in an invocation where only linking and no compilation is
# taking place, the -pthread option has no effect ("argument unused
# during compilation"). They expect -pthread to be passed in only
# when source code is being compiled.
#
# Problem is, this is at odds with the way Automake and most other
# C build frameworks function, which is that the same flags used in
# compilation (CFLAGS) are also used in linking. Many systems
# supported by AX_PTHREAD require exactly this for POSIX threads
# support, and in fact it is often not straightforward to specify a
# flag that is used only in the compilation phase and not in
# linking. Such a scenario is extremely rare in practice.
#
# Even though use of the -pthread flag in linking would only print
# a warning, this can be a nuisance for well-run software projects
# that build with -Werror. So if the active version of Clang has
# this misfeature, we search for an option to squash it.
AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
# Create an alternate version of $ac_link that compiles and
# links in two steps (.c -> .o, .o -> exe) instead of one
# (.c -> exe), because the warning occurs only in the second
# step
ax_pthread_save_ac_link="$ac_link"
ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
ax_pthread_save_CFLAGS="$CFLAGS"
for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
ac_link="$ax_pthread_save_ac_link"
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
[ac_link="$ax_pthread_2step_ac_link"
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
[break])
])
done
ac_link="$ax_pthread_save_ac_link"
CFLAGS="$ax_pthread_save_CFLAGS"
AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
])
case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
no | unknown) ;;
*) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
esac
fi # $ax_pthread_clang = yes
if test "x$ax_pthread_ok" = "xno"; then
for ax_pthread_try_flag in $ax_pthread_flags; do
case $ax_pthread_try_flag in
none)
AC_MSG_CHECKING([whether pthreads work without any flags])
;;
-mt,pthread)
AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
PTHREAD_CFLAGS="-mt"
PTHREAD_LIBS="-lpthread"
;;
-*)
AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
PTHREAD_CFLAGS="$ax_pthread_try_flag"
;;
pthread-config)
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
;;
*)
AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
PTHREAD_LIBS="-l$ax_pthread_try_flag"
;;
esac
ax_pthread_save_CFLAGS="$CFLAGS"
ax_pthread_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
# need a special flag -Kthread to make this header compile.)
# We check for pthread_join because it is in -lpthread on IRIX
# while pthread_create is in libc. We check for pthread_attr_init
# due to DEC craziness with -lpthreads. We check for
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
# if $ax_pthread_check_cond
# error "$ax_pthread_check_macro must be defined"
# endif
static void routine(void *a) { a = 0; }
static void *start_routine(void *a) { return a; }],
[pthread_t th; pthread_attr_t attr;
pthread_create(&th, 0, start_routine, 0);
pthread_join(th, 0);
pthread_attr_init(&attr);
pthread_cleanup_push(routine, 0);
pthread_cleanup_pop(0) /* ; */])],
[ax_pthread_ok=yes],
[])
CFLAGS="$ax_pthread_save_CFLAGS"
LIBS="$ax_pthread_save_LIBS"
AC_MSG_RESULT([$ax_pthread_ok])
AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
done
fi
# Various other checks:
if test "x$ax_pthread_ok" = "xyes"; then
ax_pthread_save_CFLAGS="$CFLAGS"
ax_pthread_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
AC_CACHE_CHECK([for joinable pthread attribute],
[ax_cv_PTHREAD_JOINABLE_ATTR],
[ax_cv_PTHREAD_JOINABLE_ATTR=unknown
for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
[int attr = $ax_pthread_attr; return attr /* ; */])],
[ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
[])
done
])
AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
test "x$ax_pthread_joinable_attr_defined" != "xyes"],
[AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
[$ax_cv_PTHREAD_JOINABLE_ATTR],
[Define to necessary symbol if this constant
uses a non-standard name on your system.])
ax_pthread_joinable_attr_defined=yes
])
AC_CACHE_CHECK([whether more special flags are required for pthreads],
[ax_cv_PTHREAD_SPECIAL_FLAGS],
[ax_cv_PTHREAD_SPECIAL_FLAGS=no
case $host_os in
solaris*)
ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
;;
esac
])
AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
test "x$ax_pthread_special_flags_added" != "xyes"],
[PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
ax_pthread_special_flags_added=yes])
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
[ax_cv_PTHREAD_PRIO_INHERIT],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
[[int i = PTHREAD_PRIO_INHERIT;]])],
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
[ax_cv_PTHREAD_PRIO_INHERIT=no])
])
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
test "x$ax_pthread_prio_inherit_defined" != "xyes"],
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
ax_pthread_prio_inherit_defined=yes
])
CFLAGS="$ax_pthread_save_CFLAGS"
LIBS="$ax_pthread_save_LIBS"
# More AIX lossage: compile with *_r variant
if test "x$GCC" != "xyes"; then
case $host_os in
aix*)
AS_CASE(["x/$CC"],
[x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
[#handle absolute path differently from PATH based program lookup
AS_CASE(["x$CC"],
[x/*],
[AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
[AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
;;
esac
fi
fi
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
AC_SUBST([PTHREAD_LIBS])
AC_SUBST([PTHREAD_CFLAGS])
AC_SUBST([PTHREAD_CC])
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test "x$ax_pthread_ok" = "xyes"; then
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
:
else
ax_pthread_ok=no
$2
fi
AC_LANG_POP
])dnl AX_PTHREAD
================================================
FILE: build-aux/m4/bitcoin_find_bdb48.m4
================================================
dnl Copyright (c) 2013-2015 The Bitcoin Core developers
dnl Distributed under the MIT software license, see the accompanying
dnl file COPYING or http://www.opensource.org/licenses/mit-license.php.
AC_DEFUN([BITCOIN_FIND_BDB48],[
AC_ARG_VAR(BDB_CFLAGS, [C compiler flags for BerkeleyDB, bypasses autodetection])
AC_ARG_VAR(BDB_LIBS, [Linker flags for BerkeleyDB, bypasses autodetection])
if test "x$BDB_CFLAGS" = "x"; then
AC_MSG_CHECKING([for Berkeley DB C++ headers])
BDB_CPPFLAGS=
bdbpath=X
bdb48path=X
bdbdirlist=
for _vn in 4.8 48 4 5 5.3 ''; do
for _pfx in b lib ''; do
bdbdirlist="$bdbdirlist ${_pfx}db${_vn}"
done
done
for searchpath in $bdbdirlist ''; do
test -n "${searchpath}" && searchpath="${searchpath}/"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <${searchpath}db_cxx.h>
]],[[
#if !((DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 8) || DB_VERSION_MAJOR > 4)
#error "failed to find bdb 4.8+"
#endif
]])],[
if test "x$bdbpath" = "xX"; then
bdbpath="${searchpath}"
fi
],[
continue
])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <${searchpath}db_cxx.h>
]],[[
#if !(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 8)
#error "failed to find bdb 4.8"
#endif
]])],[
bdb48path="${searchpath}"
break
],[])
done
if test "x$bdbpath" = "xX"; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([libdb_cxx headers missing, ]AC_PACKAGE_NAME[ requires this library for wallet functionality (--disable-wallet to disable wallet functionality)])
elif test "x$bdb48path" = "xX"; then
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdbpath}],db_cxx)
AC_ARG_WITH([incompatible-bdb],[AS_HELP_STRING([--with-incompatible-bdb], [allow using a bdb version other than 4.8])],[
AC_MSG_WARN([Found Berkeley DB other than 4.8; wallets opened by this build will not be portable!])
],[
AC_MSG_ERROR([Found Berkeley DB other than 4.8, required for portable wallets (--with-incompatible-bdb to ignore or --disable-wallet to disable wallet functionality)])
])
else
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdb48path}],db_cxx)
bdbpath="${bdb48path}"
fi
else
BDB_CPPFLAGS=${BDB_CFLAGS}
fi
AC_SUBST(BDB_CPPFLAGS)
if test "x$BDB_LIBS" = "x"; then
# TODO: Ideally this could find the library version and make sure it matches the headers being used
for searchlib in db_cxx-4.8 db_cxx db4_cxx; do
AC_CHECK_LIB([$searchlib],[main],[
BDB_LIBS="-l${searchlib}"
break
])
done
if test "x$BDB_LIBS" = "x"; then
AC_MSG_ERROR([libdb_cxx missing, ]AC_PACKAGE_NAME[ requires this library for wallet functionality (--disable-wallet to disable wallet functionality)])
fi
fi
AC_SUBST(BDB_LIBS)
])
================================================
FILE: build-aux/m4/bitcoin_qt.m4
================================================
dnl Copyright (c) 2013-2016 The Bitcoin Core developers
dnl Distributed under the MIT software license, see the accompanying
dnl file COPYING or http://www.opensource.org/licenses/mit-license.php.
dnl Helper for cases where a qt dependency is not met.
dnl Output: If qt version is auto, set bitcoin_enable_qt to false. Else, exit.
AC_DEFUN([BITCOIN_QT_FAIL],[
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
if test "x$bitcoin_enable_qt" != xno; then
AC_MSG_WARN([$1; sugarchain-qt frontend will not be built])
fi
bitcoin_enable_qt=no
bitcoin_enable_qt_test=no
else
AC_MSG_ERROR([$1])
fi
])
AC_DEFUN([BITCOIN_QT_CHECK],[
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != xno; then
true
$1
else
true
$2
fi
])
dnl BITCOIN_QT_PATH_PROGS([FOO], [foo foo2], [/path/to/search/first], [continue if missing])
dnl Helper for finding the path of programs needed for Qt.
dnl Inputs: $1: Variable to be set
dnl Inputs: $2: List of programs to search for
dnl Inputs: $3: Look for $2 here before $PATH
dnl Inputs: $4: If "yes", don't fail if $2 is not found.
dnl Output: $1 is set to the path of $2 if found. $2 are searched in order.
AC_DEFUN([BITCOIN_QT_PATH_PROGS],[
BITCOIN_QT_CHECK([
if test "x$3" != x; then
AC_PATH_PROGS($1,$2,,$3)
else
AC_PATH_PROGS($1,$2)
fi
if test "x$$1" = x && test "x$4" != xyes; then
BITCOIN_QT_FAIL([$1 not found])
fi
])
])
dnl Initialize qt input.
dnl This must be called before any other BITCOIN_QT* macros to ensure that
dnl input variables are set correctly.
dnl CAUTION: Do not use this inside of a conditional.
AC_DEFUN([BITCOIN_QT_INIT],[
dnl enable qt support
AC_ARG_WITH([gui],
[AS_HELP_STRING([--with-gui@<:@=no|qt4|qt5|auto@:>@],
[build sugarchain-qt GUI (default=auto, qt5 tried first)])],
[
bitcoin_qt_want_version=$withval
if test "x$bitcoin_qt_want_version" = xyes; then
bitcoin_qt_force=yes
bitcoin_qt_want_version=auto
fi
],
[bitcoin_qt_want_version=auto])
AC_ARG_WITH([qt-incdir],[AS_HELP_STRING([--with-qt-incdir=INC_DIR],[specify qt include path (overridden by pkgconfig)])], [qt_include_path=$withval], [])
AC_ARG_WITH([qt-libdir],[AS_HELP_STRING([--with-qt-libdir=LIB_DIR],[specify qt lib path (overridden by pkgconfig)])], [qt_lib_path=$withval], [])
AC_ARG_WITH([qt-plugindir],[AS_HELP_STRING([--with-qt-plugindir=PLUGIN_DIR],[specify qt plugin path (overridden by pkgconfig)])], [qt_plugin_path=$withval], [])
AC_ARG_WITH([qt-translationdir],[AS_HELP_STRING([--with-qt-translationdir=PLUGIN_DIR],[specify qt translation path (overridden by pkgconfig)])], [qt_translation_path=$withval], [])
AC_ARG_WITH([qt-bindir],[AS_HELP_STRING([--with-qt-bindir=BIN_DIR],[specify qt bin path])], [qt_bin_path=$withval], [])
AC_ARG_WITH([qtdbus],
[AS_HELP_STRING([--with-qtdbus],
[enable DBus support (default is yes if qt is enabled and QtDBus is found)])],
[use_dbus=$withval],
[use_dbus=auto])
AC_SUBST(QT_TRANSLATION_DIR,$qt_translation_path)
])
dnl Find the appropriate version of Qt libraries and includes.
dnl Inputs: $1: Whether or not pkg-config should be used. yes|no. Default: yes.
dnl Inputs: $2: If $1 is "yes" and --with-gui=auto, which qt version should be
dnl tried first.
dnl Outputs: See _BITCOIN_QT_FIND_LIBS_*
dnl Outputs: Sets variables for all qt-related tools.
dnl Outputs: bitcoin_enable_qt, bitcoin_enable_qt_dbus, bitcoin_enable_qt_test
AC_DEFUN([BITCOIN_QT_CONFIGURE],[
use_pkgconfig=$1
if test "x$use_pkgconfig" = x; then
use_pkgconfig=yes
fi
if test "x$use_pkgconfig" = xyes; then
BITCOIN_QT_CHECK([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG([$2])])
else
BITCOIN_QT_CHECK([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG])
fi
dnl This is ugly and complicated. Yuck. Works as follows:
dnl We can't discern whether Qt4 builds are static or not. For Qt5, we can
dnl check a header to find out. When Qt is built statically, some plugins must
dnl be linked into the final binary as well. These plugins have changed between
dnl Qt4 and Qt5. With Qt5, languages moved into core and the WindowsIntegration
dnl plugin was added. Since we can't tell if Qt4 is static or not, it is
dnl assumed for windows builds.
dnl _BITCOIN_QT_CHECK_STATIC_PLUGINS does a quick link-check and appends the
dnl results to QT_LIBS.
BITCOIN_QT_CHECK([
TEMP_CPPFLAGS=$CPPFLAGS
TEMP_CXXFLAGS=$CXXFLAGS
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
CXXFLAGS="$PIC_FLAGS $CXXFLAGS"
if test "x$bitcoin_qt_got_major_vers" = x5; then
_BITCOIN_QT_IS_STATIC
if test "x$bitcoin_cv_static_qt" = xyes; then
_BITCOIN_QT_FIND_STATIC_PLUGINS
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
AC_CACHE_CHECK(for Qt < 5.4, bitcoin_cv_need_acc_widget,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if QT_VERSION >= 0x050400
choke
#endif
]])],
[bitcoin_cv_need_acc_widget=yes],
[bitcoin_cv_need_acc_widget=no])
])
if test "x$bitcoin_cv_need_acc_widget" = xyes; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets])
fi
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QMinimalIntegrationPlugin)],[-lqminimal])
AC_DEFINE(QT_QPA_PLATFORM_MINIMAL, 1, [Define this symbol if the minimal qt platform exists])
if test "x$TARGET_OS" = xwindows; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows])
AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows])
elif test "x$TARGET_OS" = xlinux; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static])
AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb])
elif test "x$TARGET_OS" = xdarwin; then
AX_CHECK_LINK_FLAG([[-framework IOKit]],[QT_LIBS="$QT_LIBS -framework IOKit"],[AC_MSG_ERROR(could not iokit framework)])
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)],[-lqcocoa])
AC_DEFINE(QT_QPA_PLATFORM_COCOA, 1, [Define this symbol if the qt platform is cocoa])
fi
fi
else
if test "x$TARGET_OS" = xwindows; then
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
_BITCOIN_QT_CHECK_STATIC_PLUGINS([
Q_IMPORT_PLUGIN(qcncodecs)
Q_IMPORT_PLUGIN(qjpcodecs)
Q_IMPORT_PLUGIN(qtwcodecs)
Q_IMPORT_PLUGIN(qkrcodecs)
Q_IMPORT_PLUGIN(AccessibleFactory)],
[-lqcncodecs -lqjpcodecs -lqtwcodecs -lqkrcodecs -lqtaccessiblewidgets])
fi
fi
CPPFLAGS=$TEMP_CPPFLAGS
CXXFLAGS=$TEMP_CXXFLAGS
])
if test "x$use_pkgconfig$qt_bin_path" = xyes; then
if test "x$bitcoin_qt_got_major_vers" = x5; then
qt_bin_path="`$PKG_CONFIG --variable=host_bins Qt5Core 2>/dev/null`"
fi
fi
if test "x$use_hardening" != xno; then
BITCOIN_QT_CHECK([
AC_MSG_CHECKING(whether -fPIE can be used with this Qt config)
TEMP_CPPFLAGS=$CPPFLAGS
TEMP_CXXFLAGS=$CXXFLAGS
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
CXXFLAGS="$PIE_FLAGS $CXXFLAGS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if defined(QT_REDUCE_RELOCATIONS)
choke
#endif
]])],
[ AC_MSG_RESULT(yes); QT_PIE_FLAGS=$PIE_FLAGS ],
[ AC_MSG_RESULT(no); QT_PIE_FLAGS=$PIC_FLAGS]
)
CPPFLAGS=$TEMP_CPPFLAGS
CXXFLAGS=$TEMP_CXXFLAGS
])
else
BITCOIN_QT_CHECK([
AC_MSG_CHECKING(whether -fPIC is needed with this Qt config)
TEMP_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if defined(QT_REDUCE_RELOCATIONS)
choke
#endif
]])],
[ AC_MSG_RESULT(no)],
[ AC_MSG_RESULT(yes); QT_PIE_FLAGS=$PIC_FLAGS]
)
CPPFLAGS=$TEMP_CPPFLAGS
])
fi
BITCOIN_QT_PATH_PROGS([MOC], [moc-qt${bitcoin_qt_got_major_vers} moc${bitcoin_qt_got_major_vers} moc], $qt_bin_path)
BITCOIN_QT_PATH_PROGS([UIC], [uic-qt${bitcoin_qt_got_major_vers} uic${bitcoin_qt_got_major_vers} uic], $qt_bin_path)
BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt${bitcoin_qt_got_major_vers} rcc${bitcoin_qt_got_major_vers} rcc], $qt_bin_path)
BITCOIN_QT_PATH_PROGS([LRELEASE], [lrelease-qt${bitcoin_qt_got_major_vers} lrelease${bitcoin_qt_got_major_vers} lrelease], $qt_bin_path)
BITCOIN_QT_PATH_PROGS([LUPDATE], [lupdate-qt${bitcoin_qt_got_major_vers} lupdate${bitcoin_qt_got_major_vers} lupdate],$qt_bin_path, yes)
MOC_DEFS='-DHAVE_CONFIG_H -I$(srcdir)'
case $host in
*darwin*)
BITCOIN_QT_CHECK([
MOC_DEFS="${MOC_DEFS} -DQ_OS_MAC"
base_frameworks="-framework Foundation -framework ApplicationServices -framework AppKit"
AX_CHECK_LINK_FLAG([[$base_frameworks]],[QT_LIBS="$QT_LIBS $base_frameworks"],[AC_MSG_ERROR(could not find base frameworks)])
])
;;
*mingw*)
BITCOIN_QT_CHECK([
AX_CHECK_LINK_FLAG([[-mwindows]],[QT_LDFLAGS="$QT_LDFLAGS -mwindows"],[AC_MSG_WARN(-mwindows linker support not detected)])
])
esac
dnl enable qt support
AC_MSG_CHECKING(whether to build ]AC_PACKAGE_NAME[ GUI)
BITCOIN_QT_CHECK([
bitcoin_enable_qt=yes
bitcoin_enable_qt_test=yes
if test "x$have_qt_test" = xno; then
bitcoin_enable_qt_test=no
fi
bitcoin_enable_qt_dbus=no
if test "x$use_dbus" != xno && test "x$have_qt_dbus" = xyes; then
bitcoin_enable_qt_dbus=yes
fi
if test "x$use_dbus" = xyes && test "x$have_qt_dbus" = xno; then
AC_MSG_ERROR([libQtDBus not found. Install libQtDBus or remove --with-qtdbus.])
fi
if test "x$LUPDATE" = x; then
AC_MSG_WARN([lupdate is required to update qt translations])
fi
],[
bitcoin_enable_qt=no
])
AC_MSG_RESULT([$bitcoin_enable_qt (Qt${bitcoin_qt_got_major_vers})])
AC_SUBST(QT_PIE_FLAGS)
AC_SUBST(QT_INCLUDES)
AC_SUBST(QT_LIBS)
AC_SUBST(QT_LDFLAGS)
AC_SUBST(QT_DBUS_INCLUDES)
AC_SUBST(QT_DBUS_LIBS)
AC_SUBST(QT_TEST_INCLUDES)
AC_SUBST(QT_TEST_LIBS)
AC_SUBST(QT_SELECT, qt${bitcoin_qt_got_major_vers})
AC_SUBST(MOC_DEFS)
])
dnl All macros below are internal and should _not_ be used from the main
dnl configure.ac.
dnl ----
dnl Internal. Check if the included version of Qt is Qt5.
dnl Requires: INCLUDES must be populated as necessary.
dnl Output: bitcoin_cv_qt5=yes|no
AC_DEFUN([_BITCOIN_QT_CHECK_QT5],[
AC_CACHE_CHECK(for Qt 5, bitcoin_cv_qt5,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if QT_VERSION < 0x050000
choke
#endif
]])],
[bitcoin_cv_qt5=yes],
[bitcoin_cv_qt5=no])
])])
dnl Internal. Check if the linked version of Qt was built as static libs.
dnl Requires: Qt5. This check cannot determine if Qt4 is static.
dnl Requires: INCLUDES and LIBS must be populated as necessary.
dnl Output: bitcoin_cv_static_qt=yes|no
dnl Output: Defines QT_STATICPLUGIN if plugins are static.
AC_DEFUN([_BITCOIN_QT_IS_STATIC],[
AC_CACHE_CHECK(for static Qt, bitcoin_cv_static_qt,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if !defined(QT_STATIC)
choke
#endif
]])],
[bitcoin_cv_static_qt=yes],
[bitcoin_cv_static_qt=no])
])
if test "x$bitcoin_cv_static_qt" = xyes; then
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol for static Qt plugins])
fi
])
dnl Internal. Check if the link-requirements for static plugins are met.
dnl Requires: INCLUDES and LIBS must be populated as necessary.
dnl Inputs: $1: A series of Q_IMPORT_PLUGIN().
dnl Inputs: $2: The libraries that resolve $1.
dnl Output: QT_LIBS is prepended or configure exits.
AC_DEFUN([_BITCOIN_QT_CHECK_STATIC_PLUGINS],[
AC_MSG_CHECKING(for static Qt plugins: $2)
CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS"
LIBS="$2 $QT_LIBS $LIBS"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#define QT_STATICPLUGIN
#include <QtPlugin>
$1]],
[[return 0;]])],
[AC_MSG_RESULT(yes); QT_LIBS="$2 $QT_LIBS"],
[AC_MSG_RESULT(no); BITCOIN_QT_FAIL(Could not resolve: $2)])
LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS"
])
dnl Internal. Find paths necessary for linking qt static plugins
dnl Inputs: bitcoin_qt_got_major_vers. 4 or 5.
dnl Inputs: qt_plugin_path. optional.
dnl Outputs: QT_LIBS is appended
AC_DEFUN([_BITCOIN_QT_FIND_STATIC_PLUGINS],[
if test "x$bitcoin_qt_got_major_vers" = x5; then
if test "x$qt_plugin_path" != x; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms"
if test -d "$qt_plugin_path/accessible"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
fi
fi
if test "x$use_pkgconfig" = xyes; then
: dnl
m4_ifdef([PKG_CHECK_MODULES],[
PKG_CHECK_MODULES([QTPLATFORM], [Qt5PlatformSupport], [QT_LIBS="$QTPLATFORM_LIBS $QT_LIBS"])
if test "x$TARGET_OS" = xlinux; then
PKG_CHECK_MODULES([X11XCB], [x11-xcb], [QT_LIBS="$X11XCB_LIBS $QT_LIBS"])
if ${PKG_CONFIG} --exists "Qt5Core >= 5.5" 2>/dev/null; then
PKG_CHECK_MODULES([QTXCBQPA], [Qt5XcbQpa], [QT_LIBS="$QTXCBQPA_LIBS $QT_LIBS"])
fi
elif test "x$TARGET_OS" = xdarwin; then
PKG_CHECK_MODULES([QTPRINT], [Qt5PrintSupport], [QT_LIBS="$QTPRINT_LIBS $QT_LIBS"])
fi
])
else
if test "x$TARGET_OS" = xwindows; then
AC_CACHE_CHECK(for Qt >= 5.6, bitcoin_cv_need_platformsupport,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if QT_VERSION < 0x050600
choke
#endif
]])],
[bitcoin_cv_need_platformsupport=yes],
[bitcoin_cv_need_platformsupport=no])
])
if test "x$bitcoin_cv_need_platformsupport" = xyes; then
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}PlatformSupport],[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}PlatformSupport not found)))
fi
fi
fi
else
if test "x$qt_plugin_path" != x; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
QT_LIBS="$QT_LIBS -L$qt_plugin_path/codecs"
fi
fi
])
dnl Internal. Find Qt libraries using pkg-config.
dnl Inputs: bitcoin_qt_want_version (from --with-gui=). The version to check
dnl first.
dnl Inputs: $1: If bitcoin_qt_want_version is "auto", check for this version
dnl first.
dnl Outputs: All necessary QT_* variables are set.
dnl Outputs: bitcoin_qt_got_major_vers is set to "4" or "5".
dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no.
AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG],[
m4_ifdef([PKG_CHECK_MODULES],[
auto_priority_version=$1
if test "x$auto_priority_version" = x; then
auto_priority_version=qt5
fi
if test "x$bitcoin_qt_want_version" = xqt5 || ( test "x$bitcoin_qt_want_version" = xauto && test "x$auto_priority_version" = xqt5 ); then
QT_LIB_PREFIX=Qt5
bitcoin_qt_got_major_vers=5
else
QT_LIB_PREFIX=Qt
bitcoin_qt_got_major_vers=4
fi
qt5_modules="Qt5Core Qt5Gui Qt5Network Qt5Widgets"
qt4_modules="QtCore QtGui QtNetwork"
BITCOIN_QT_CHECK([
if test "x$bitcoin_qt_want_version" = xqt5 || ( test "x$bitcoin_qt_want_version" = xauto && test "x$auto_priority_version" = xqt5 ); then
PKG_CHECK_MODULES([QT5], [$qt5_modules], [QT_INCLUDES="$QT5_CFLAGS"; QT_LIBS="$QT5_LIBS" have_qt=yes],[have_qt=no])
elif test "x$bitcoin_qt_want_version" = xqt4 || ( test "x$bitcoin_qt_want_version" = xauto && test "x$auto_priority_version" = xqt4 ); then
PKG_CHECK_MODULES([QT4], [$qt4_modules], [QT_INCLUDES="$QT4_CFLAGS"; QT_LIBS="$QT4_LIBS" ; have_qt=yes], [have_qt=no])
fi
dnl qt version is set to 'auto' and the preferred version wasn't found. Now try the other.
if test "x$have_qt" = xno && test "x$bitcoin_qt_want_version" = xauto; then
if test "x$auto_priority_version" = xqt5; then
PKG_CHECK_MODULES([QT4], [$qt4_modules], [QT_INCLUDES="$QT4_CFLAGS"; QT_LIBS="$QT4_LIBS" ; have_qt=yes; QT_LIB_PREFIX=Qt; bitcoin_qt_got_major_vers=4], [have_qt=no])
else
PKG_CHECK_MODULES([QT5], [$qt5_modules], [QT_INCLUDES="$QT5_CFLAGS"; QT_LIBS="$QT5_LIBS" ; have_qt=yes; QT_LIB_PREFIX=Qt5; bitcoin_qt_got_major_vers=5], [have_qt=no])
fi
fi
if test "x$have_qt" != xyes; then
have_qt=no
BITCOIN_QT_FAIL([Qt dependencies not found])
fi
])
BITCOIN_QT_CHECK([
PKG_CHECK_MODULES([QT_TEST], [${QT_LIB_PREFIX}Test], [QT_TEST_INCLUDES="$QT_TEST_CFLAGS"; have_qt_test=yes], [have_qt_test=no])
if test "x$use_dbus" != xno; then
PKG_CHECK_MODULES([QT_DBUS], [${QT_LIB_PREFIX}DBus], [QT_DBUS_INCLUDES="$QT_DBUS_CFLAGS"; have_qt_dbus=yes], [have_qt_dbus=no])
fi
])
])
true; dnl
])
dnl Internal. Find Qt libraries without using pkg-config. Version is deduced
dnl from the discovered headers.
dnl Inputs: bitcoin_qt_want_version (from --with-gui=). The version to use.
dnl If "auto", the version will be discovered by _BITCOIN_QT_CHECK_QT5.
dnl Outputs: All necessary QT_* variables are set.
dnl Outputs: bitcoin_qt_got_major_vers is set to "4" or "5".
dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no.
AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
TEMP_CPPFLAGS="$CPPFLAGS"
TEMP_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$PIC_FLAGS $CXXFLAGS"
TEMP_LIBS="$LIBS"
BITCOIN_QT_CHECK([
if test "x$qt_include_path" != x; then
QT_INCLUDES="-I$qt_include_path -I$qt_include_path/QtCore -I$qt_include_path/QtGui -I$qt_include_path/QtWidgets -I$qt_include_path/QtNetwork -I$qt_include_path/QtTest -I$qt_include_path/QtDBus"
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
fi
])
BITCOIN_QT_CHECK([AC_CHECK_HEADER([QtPlugin],,BITCOIN_QT_FAIL(QtCore headers missing))])
BITCOIN_QT_CHECK([AC_CHECK_HEADER([QApplication],, BITCOIN_QT_FAIL(QtGui headers missing))])
BITCOIN_QT_CHECK([AC_CHECK_HEADER([QLocalSocket],, BITCOIN_QT_FAIL(QtNetwork headers missing))])
BITCOIN_QT_CHECK([
if test "x$bitcoin_qt_want_version" = xauto; then
_BITCOIN_QT_CHECK_QT5
fi
if test "x$bitcoin_cv_qt5" = xyes || test "x$bitcoin_qt_want_version" = xqt5; then
QT_LIB_PREFIX=Qt5
bitcoin_qt_got_major_vers=5
else
QT_LIB_PREFIX=Qt
bitcoin_qt_got_major_vers=4
fi
])
BITCOIN_QT_CHECK([
LIBS=
if test "x$qt_lib_path" != x; then
LIBS="$LIBS -L$qt_lib_path"
fi
if test "x$TARGET_OS" = xwindows; then
AC_CHECK_LIB([imm32], [main],, BITCOIN_QT_FAIL(libimm32 not found))
fi
])
BITCOIN_QT_CHECK(AC_CHECK_LIB([z] ,[main],,AC_MSG_WARN([zlib not found. Assuming qt has it built-in])))
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([png_error] ,[qtpng png],,AC_MSG_WARN([libpng not found. Assuming qt has it built-in])))
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([jpeg_create_decompress] ,[qtjpeg jpeg],,AC_MSG_WARN([libjpeg not found. Assuming qt has it built-in])))
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([pcre16_exec], [qtpcre pcre16],,AC_MSG_WARN([libpcre16 not found. Assuming qt has it built-in])))
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([hb_ot_tags_from_script] ,[qtharfbuzzng harfbuzz],,AC_MSG_WARN([libharfbuzz not found. Assuming qt has it built-in or support is disabled])))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Core] ,[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}Core not found)))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Gui] ,[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}Gui not found)))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Network],[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}Network not found)))
if test "x$bitcoin_qt_got_major_vers" = x5; then
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Widgets],[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}Widgets not found)))
fi
QT_LIBS="$LIBS"
LIBS="$TEMP_LIBS"
BITCOIN_QT_CHECK([
LIBS=
if test "x$qt_lib_path" != x; then
LIBS="-L$qt_lib_path"
fi
AC_CHECK_LIB([${QT_LIB_PREFIX}Test], [main],, have_qt_test=no)
AC_CHECK_HEADER([QTest],, have_qt_test=no)
QT_TEST_LIBS="$LIBS"
if test "x$use_dbus" != xno; then
LIBS=
if test "x$qt_lib_path" != x; then
LIBS="-L$qt_lib_path"
fi
AC_CHECK_LIB([${QT_LIB_PREFIX}DBus], [main],, have_qt_dbus=no)
AC_CHECK_HEADER([QtDBus],, have_qt_dbus=no)
QT_DBUS_LIBS="$LIBS"
fi
])
CPPFLAGS="$TEMP_CPPFLAGS"
CXXFLAGS="$TEMP_CXXFLAGS"
LIBS="$TEMP_LIBS"
])
================================================
FILE: build-aux/m4/bitcoin_subdir_to_include.m4
================================================
dnl Copyright (c) 2013-2014 The Bitcoin Core developers
dnl Distributed under the MIT software license, see the accompanying
dnl file COPYING or http://www.opensource.org/licenses/mit-license.php.
dnl BITCOIN_SUBDIR_TO_INCLUDE([CPPFLAGS-VARIABLE-NAME],[SUBDIRECTORY-NAME],[HEADER-FILE])
dnl SUBDIRECTORY-NAME must end with a path separator
AC_DEFUN([BITCOIN_SUBDIR_TO_INCLUDE],[
if test "x$2" = "x"; then
AC_MSG_RESULT([default])
else
echo "#include <$2$3.h>" >conftest.cpp
newinclpath=`${CXXCPP} ${CPPFLAGS} -M conftest.cpp 2>/dev/null | [ tr -d '\\n\\r\\\\' | sed -e 's/^.*[[:space:]:]\(\/[^[:space:]]*\)]$3[\.h[[:space:]].*$/\1/' -e t -e d`]
AC_MSG_RESULT([${newinclpath}])
if test "x${newinclpath}" != "x"; then
eval "$1=\"\$$1\"' -I${newinclpath}'"
fi
fi
])
================================================
FILE: build-aux/m4/l_atomic.m4
================================================
dnl Copyright (c) 2015 Tim Kosse <tim.kosse@filezilla-project.org>
dnl Copying and distribution of this file, with or without modification, are
dnl permitted in any medium without royalty provided the copyright notice
dnl and this notice are preserved. This file is offered as-is, without any
dnl warranty.
# Some versions of gcc/libstdc++ require linking with -latomic if
# using the C++ atomic library.
#
# Sourced from http://bugs.debian.org/797228
m4_define([_CHECK_ATOMIC_testbody], [[
#include <atomic>
#include <cstdint>
int main() {
std::atomic<int64_t> a{};
int64_t v = 5;
int64_t r = a.fetch_add(v);
return static_cast<int>(r);
}
]])
AC_DEFUN([CHECK_ATOMIC], [
AC_LANG_PUSH(C++)
AC_MSG_CHECKING([whether std::atomic can be used without link library])
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_ATOMIC_testbody])],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
LIBS="$LIBS -latomic"
AC_MSG_CHECKING([whether std::atomic needs -latomic])
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_ATOMIC_testbody])],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
AC_MSG_FAILURE([cannot figure out how to use std::atomic])
])
])
AC_LANG_POP
])
================================================
FILE: configure.ac
================================================
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 16)
define(_CLIENT_VERSION_REVISION, 3)
define(_CLIENT_VERSION_BUILD, 36)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2020)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Sugarchain Yumekawa]])
AC_INIT([Sugarchain Yumekawa],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/sugarchain-project/sugarchain/issues],[sugarchain],[https://sugarchain.org/])
AC_CONFIG_SRCDIR([src/validation.cpp])
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([build-aux/m4])
BITCOIN_DAEMON_NAME=sugarchaind
BITCOIN_GUI_NAME=sugarchain-qt
BITCOIN_CLI_NAME=sugarchain-cli
BITCOIN_TX_NAME=sugarchain-tx
dnl Unless the user specified ARFLAGS, force it to be cr
AC_ARG_VAR(ARFLAGS, [Flags for the archiver, defaults to <cr> if not set])
if test "x${ARFLAGS+set}" != "xset"; then
ARFLAGS="cr"
fi
AC_CANONICAL_HOST
AH_TOP([#ifndef BITCOIN_CONFIG_H])
AH_TOP([#define BITCOIN_CONFIG_H])
AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
dnl faketime breaks configure and is only needed for make. Disable it here.
unset FAKETIME
dnl Automake init set-up and checks
AM_INIT_AUTOMAKE([no-define subdir-objects foreign])
dnl faketime messes with timestamps and causes configure to be re-run.
dnl --disable-maintainer-mode can be used to bypass this.
AM_MAINTAINER_MODE([enable])
dnl make the compilation flags quiet unless V=1 is used
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl Compiler checks (here before libtool).
if test "x${CXXFLAGS+set}" = "xset"; then
CXXFLAGS_overridden=yes
else
CXXFLAGS_overridden=no
fi
AC_PROG_CXX
dnl By default, libtool for mingw refuses to link static libs into a dll for
dnl fear of mixing pic/non-pic objects, and import/export complications. Since
dnl we have those under control, re-enable that functionality.
case $host in
*mingw*)
lt_cv_deplibs_check_method="pass_all"
;;
esac
dnl Require C++11 compiler (no GNU extensions)
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault])
dnl Check if -latomic is required for <std::atomic>
CHECK_ATOMIC
dnl Unless the user specified OBJCXX, force it to be the same as CXX. This ensures
dnl that we get the same -std flags for both.
m4_ifdef([AC_PROG_OBJCXX],[
if test "x${OBJCXX+set}" = "x"; then
OBJCXX="${CXX}"
fi
AC_PROG_OBJCXX
])
dnl Libtool init checks.
LT_INIT([pic-only])
dnl Check/return PATH for base programs.
AC_PATH_TOOL(AR, ar)
AC_PATH_TOOL(RANLIB, ranlib)
AC_PATH_TOOL(STRIP, strip)
AC_PATH_TOOL(GCOV, gcov)
AC_PATH_PROG(LCOV, lcov)
dnl Python 3.x is supported from 3.4 on (see https://github.com/bitcoin/bitcoin/issues/7893)
AC_PATH_PROGS([PYTHON], [python3.6 python3.5 python3.4 python3 python2.7 python2 python])
AC_PATH_PROG(GENHTML, genhtml)
AC_PATH_PROG([GIT], [git])
AC_PATH_PROG(CCACHE,ccache)
AC_PATH_PROG(XGETTEXT,xgettext)
AC_PATH_PROG(HEXDUMP,hexdump)
AC_PATH_TOOL(READELF, readelf)
AC_PATH_TOOL(CPPFILT, c++filt)
AC_PATH_TOOL(OBJCOPY, objcopy)
AC_ARG_VAR(PYTHONPATH, Augments the default search path for python module files)
# Enable wallet
AC_ARG_ENABLE([wallet],
[AS_HELP_STRING([--disable-wallet],
[disable wallet (enabled by default)])],
[enable_wallet=$enableval],
[enable_wallet=yes])
AC_ARG_WITH([miniupnpc],
[AS_HELP_STRING([--with-miniupnpc],
[enable UPNP (default is yes if libminiupnpc is found)])],
[use_upnp=$withval],
[use_upnp=auto])
AC_ARG_ENABLE([upnp-default],
[AS_HELP_STRING([--enable-upnp-default],
[if UPNP is enabled, turn it on at startup (default is no)])],
[use_upnp_default=$enableval],
[use_upnp_default=no])
AC_ARG_ENABLE(tests,
AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
[use_tests=$enableval],
[use_tests=yes])
AC_ARG_ENABLE(gui-tests,
AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
[use_gui_tests=$enableval],
[use_gui_tests=$use_tests])
AC_ARG_ENABLE(bench,
AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
[use_bench=$enableval],
[use_bench=yes])
AC_ARG_ENABLE([extended-functional-tests],
AS_HELP_STRING([--enable-extended-functional-tests],[enable expensive functional tests when using lcov (default no)]),
[use_extended_functional_tests=$enableval],
[use_extended_functional_tests=no])
AC_ARG_WITH([qrencode],
[AS_HELP_STRING([--with-qrencode],
[enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
[use_qr=$withval],
[use_qr=auto])
AC_ARG_ENABLE([hardening],
[AS_HELP_STRING([--disable-hardening],
[do not attempt to harden the resulting executables (default is to harden)])],
[use_hardening=$enableval],
[use_hardening=yes])
AC_ARG_ENABLE([reduce-exports],
[AS_HELP_STRING([--enable-reduce-exports],
[attempt to reduce exported symbols in the resulting executables (default is no)])],
[use_reduce_exports=$enableval],
[use_reduce_exports=no])
AC_ARG_ENABLE([ccache],
[AS_HELP_STRING([--disable-ccache],
[do not use ccache for building (default is to use if found)])],
[use_ccache=$enableval],
[use_ccache=auto])
AC_ARG_ENABLE([lcov],
[AS_HELP_STRING([--enable-lcov],
[enable lcov testing (default is no)])],
[use_lcov=$enableval],
[use_lcov=no])
AC_ARG_ENABLE([lcov-branch-coverage],
[AS_HELP_STRING([--enable-lcov-branch-coverage],
[enable lcov testing branch coverage (default is no)])],
[use_lcov_branch=yes],
[use_lcov_branch=no])
AC_ARG_ENABLE([glibc-back-compat],
[AS_HELP_STRING([--enable-glibc-back-compat],
[enable backwards compatibility with glibc])],
[use_glibc_compat=$enableval],
[use_glibc_compat=no])
AC_ARG_ENABLE([asm],
[AS_HELP_STRING([--enable-asm],
[Enable assembly routines (default is yes)])],
[use_asm=$enableval],
[use_asm=yes])
if test "x$use_asm" = xyes; then
AC_DEFINE(USE_ASM, 1, [Define this symbol to build in assembly routines])
fi
AC_ARG_WITH([system-univalue],
[AS_HELP_STRING([--with-system-univalue],
[Build with system UniValue (default is no)])],
[system_univalue=$withval],
[system_univalue=no]
)
AC_ARG_ENABLE([zmq],
[AS_HELP_STRING([--disable-zmq],
[disable ZMQ notifications])],
[use_zmq=$enableval],
[use_zmq=yes])
AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
AC_ARG_ENABLE(man,
[AS_HELP_STRING([--disable-man],
[do not install man pages (default is to install)])],,
enable_man=yes)
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
# Enable debug
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug],
[use debug compiler flags and macros (default is no)])],
[enable_debug=$enableval],
[enable_debug=no])
# Turn warnings into errors
AC_ARG_ENABLE([werror],
[AS_HELP_STRING([--enable-werror],
[Treat certain compiler warnings as errors (default is no)])],
[enable_werror=$enableval],
[enable_werror=no])
AC_LANG_PUSH([C++])
AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
if test "x$enable_debug" = xyes; then
CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
if test "x$GCC" = xyes; then
CFLAGS="$CFLAGS -g3 -O0"
fi
if test "x$GXX" = xyes; then
CXXFLAGS="$CXXFLAGS -g3 -O0"
fi
fi
ERROR_CXXFLAGS=
if test "x$enable_werror" = "xyes"; then
if test "x$CXXFLAG_WERROR" = "x"; then
AC_MSG_ERROR("enable-werror set but -Werror is not usable")
fi
AX_CHECK_COMPILE_FLAG([-Werror=vla],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=vla"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Werror=thread-safety-analysis],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=thread-safety-analysis"],,[[$CXXFLAG_WERROR]])
fi
if test "x$CXXFLAGS_overridden" = "xno"; then
AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wthread-safety-analysis],[CXXFLAGS="$CXXFLAGS -Wthread-safety-analysis"],,[[$CXXFLAG_WERROR]])
## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
## unknown options if any other warning is produced. Test the -Wfoo case, and
## set the -Wno-foo case if it works.
AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough],[CXXFLAGS="$CXXFLAGS -Wno-implicit-fallthrough"],,[[$CXXFLAG_WERROR]])
fi
# Check for optional instruction set support. Enabling these does _not_ imply that all code will
# be compiled with them, rather that specific objects/libs may use them after checking for runtime
# compatibility.
AX_CHECK_COMPILE_FLAG([-msse4.2],[[SSE42_CXXFLAGS="-msse4.2"]],,[[$CXXFLAG_WERROR]])
TEMP_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $SSE42_CXXFLAGS"
AC_MSG_CHECKING(for assembler crc32 support)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <stdint.h>
#if defined(_MSC_VER)
#include <intrin.h>
#elif defined(__GNUC__) && defined(__SSE4_2__)
#include <nmmintrin.h>
#endif
]],[[
uint64_t l = 0;
l = _mm_crc32_u8(l, 0);
l = _mm_crc32_u32(l, 0);
l = _mm_crc32_u64(l, 0);
return l;
]])],
[ AC_MSG_RESULT(yes); enable_hwcrc32=yes],
[ AC_MSG_RESULT(no)]
)
CXXFLAGS="$TEMP_CXXFLAGS"
CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
AC_ARG_WITH([utils],
[AS_HELP_STRING([--with-utils],
[build sugarchain-cli bitcoin-tx (default=yes)])],
[build_bitcoin_utils=$withval],
[build_bitcoin_utils=yes])
AC_ARG_WITH([libs],
[AS_HELP_STRING([--with-libs],
[build libraries (default=yes)])],
[build_bitcoin_libs=$withval],
[build_bitcoin_libs=yes])
AC_ARG_WITH([daemon],
[AS_HELP_STRING([--with-daemon],
[build sugarchaind daemon (default=yes)])],
[build_bitcoind=$withval],
[build_bitcoind=yes])
use_pkgconfig=yes
case $host in
*mingw*)
#pkgconfig does more harm than good with MinGW
use_pkgconfig=no
TARGET_OS=windows
AC_CHECK_LIB([mingwthrd], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([kernel32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([user32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([gdi32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([comdlg32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([winspool], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([winmm], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([shell32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([comctl32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([ole32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([oleaut32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([uuid], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([rpcrt4], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([advapi32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([ws2_32], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([mswsock], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([shlwapi], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([iphlpapi], [main],, AC_MSG_ERROR(lib missing))
AC_CHECK_LIB([crypt32], [main],, AC_MSG_ERROR(lib missing))
# -static is interpreted by libtool, where it has a different meaning.
# In libtool-speak, it's -all-static.
AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
AC_PATH_PROG([MAKENSIS], [makensis], none)
if test x$MAKENSIS = xnone; then
AC_MSG_WARN("makensis not found. Cannot create installer.")
fi
AC_PATH_TOOL(WINDRES, windres, none)
if test x$WINDRES = xnone; then
AC_MSG_ERROR("windres not found")
fi
CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
LEVELDB_TARGET_FLAGS="-DOS_WINDOWS"
if test "x$CXXFLAGS_overridden" = "xno"; then
CXXFLAGS="$CXXFLAGS -w"
fi
case $host in
i?86-*) WINDOWS_BITS=32 ;;
x86_64-*) WINDOWS_BITS=64 ;;
*) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
esac
AC_SUBST(WINDOWS_BITS)
dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
dnl also overridden to prevent their insertion later.
dnl This should only affect dll's.
archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
postdeps_CXX=
;;
*darwin*)
TARGET_OS=darwin
LEVELDB_TARGET_FLAGS="-DOS_MACOSX"
if test x$cross_compiling != xyes; then
BUILD_OS=darwin
AC_CHECK_PROG([PORT],port, port)
if test x$PORT = xport; then
dnl add default macports paths
CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
LIBS="$LIBS -L/opt/local/lib"
if test -d /opt/local/include/db48; then
CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
LIBS="$LIBS -L/opt/local/lib/db48"
fi
fi
AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
AC_CHECK_PROG([BREW],brew, brew)
if test x$BREW = xbrew; then
dnl These Homebrew packages may be keg-only, meaning that they won't be found
dnl in expected paths because they may conflict with system files. Ask
dnl Homebrew where each one is located, then adjust paths accordingly.
dnl It's safe to add these paths even if the functionality is disabled by
dnl the user (--without-wallet or --without-gui for example).
openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
if test x$openssl_prefix != x; then
PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH
fi
if test x$bdb_prefix != x; then
CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
LIBS="$LIBS -L$bdb_prefix/lib"
fi
if test x$qt5_prefix != x; then
PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH
fi
fi
else
case $build_os in
*darwin*)
BUILD_OS=darwin
;;
*)
AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
AC_PATH_TOOL([OTOOL], [otool], otool)
AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)
dnl libtool will try to strip the static lib, which is a problem for
dnl cross-builds because strip attempts to call a hard-coded ld,
dnl which may not exist in the path. Stripping the .a is not
dnl necessary, so just disable it.
old_striplib=
;;
esac
fi
AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
CPPFLAGS="$CPPFLAGS -DMAC_OSX"
OBJCXXFLAGS="$CXXFLAGS"
;;
*linux*)
TARGET_OS=linux
LEVELDB_TARGET_FLAGS="-DOS_LINUX"
;;
*freebsd*)
LEVELDB_TARGET_FLAGS="-DOS_FREEBSD"
;;
*openbsd*)
LEVELDB_TARGET_FLAGS="-DOS_OPENBSD"
;;
*netbsd*)
LEVELDB_TARGET_FLAGS="-DOS_NETBSD"
;;
*)
OTHER_OS=`echo ${host_os} | awk '{print toupper($0)}'`
AC_MSG_WARN([Guessing LevelDB OS as OS_${OTHER_OS}, please check whether this is correct, if not add an entry to configure.ac.])
LEVELDB_TARGET_FLAGS="-DOS_${OTHER_OS}"
;;
esac
if test x$use_pkgconfig = xyes; then
m4_ifndef([PKG_PROG_PKG_CONFIG], [AC_MSG_ERROR(PKG_PROG_PKG_CONFIG macro not found. Please install pkg-config and re-run autogen.sh.)])
m4_ifdef([PKG_PROG_PKG_CONFIG], [
PKG_PROG_PKG_CONFIG
if test x"$PKG_CONFIG" = "x"; then
AC_MSG_ERROR(pkg-config not found.)
fi
])
fi
if test x$use_extended_functional_tests != xno; then
AC_SUBST(EXTENDED_FUNCTIONAL_TESTS, --extended)
fi
if test x$use_lcov = xyes; then
if test x$LCOV = x; then
AC_MSG_ERROR("lcov testing requested but lcov not found")
fi
if test x$GCOV = x; then
AC_MSG_ERROR("lcov testing requested but gcov not found")
fi
if test x$PYTHON = x; then
AC_MSG_ERROR("lcov testing requested but python not found")
fi
if test x$GENHTML = x; then
AC_MSG_ERROR("lcov testing requested but genhtml not found")
fi
LCOV="$LCOV --gcov-tool=$GCOV"
AX_CHECK_LINK_FLAG([[--coverage]], [LDFLAGS="$LDFLAGS --coverage"],
[AC_MSG_ERROR("lcov testing requested but --coverage linker flag does not work")])
AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
[AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
AC_DEFINE(USE_COVERAGE, 1, [Define this symbol if coverage is enabled])
CXXFLAGS="$CXXFLAGS -Og"
fi
if test x$use_lcov_branch != xno; then
AC_SUBST(LCOV_OPTS, "$LCOV_OPTS --rc lcov_branch_coverage=1")
fi
dnl Check for endianness
AC_C_BIGENDIAN
dnl Check for pthread compile/link requirements
AX_PTHREAD
# The following macro will add the necessary defines to bitcoin-config.h, but
# they also need to be passed down to any subprojects. Pull the results out of
# the cache and add them to CPPFLAGS.
AC_SYS_LARGEFILE
# detect POSIX or GNU variant of strerror_r
AC_FUNC_STRERROR_R
if test x$ac_cv_sys_file_offset_bits != x &&
test x$ac_cv_sys_file_offset_bits != xno &&
test x$ac_cv_sys_file_offset_bits != xunknown; then
CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
fi
if test x$ac_cv_sys_large_files != x &&
test x$ac_cv_sys_large_files != xno &&
test x$ac_cv_sys_large_files != xunknown; then
CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
fi
AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
AX_GCC_FUNC_ATTRIBUTE([visibility])
AX_GCC_FUNC_ATTRIBUTE([dllexport])
AX_GCC_FUNC_ATTRIBUTE([dllimport])
if test x$use_glibc_compat != xno; then
#glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
#in anyway for back-compat.
AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
#__fdelt_chk's params and return type have changed from long unsigned int to long int.
# See which one is present here.
AC_MSG_CHECKING(__fdelt_chk type)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
#undef _FORTIFY_SOURCE
#endif
#define _FORTIFY_SOURCE 2
#include <sys/select.h>
extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
[ fdelt_type="long unsigned int"],
[ fdelt_type="long int"])
AC_MSG_RESULT($fdelt_type)
AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
else
AC_SEARCH_LIBS([clock_gettime],[rt])
fi
if test x$TARGET_OS != xwindows; then
# All windows code is PIC, forcing it on just adds useless compile warnings
AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
fi
if test x$use_hardening != xno; then
AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
])
HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
])
AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"])
AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
if test x$TARGET_OS != xwindows; then
AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
fi
case $host in
*mingw*)
AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
;;
esac
fi
dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
if test x$TARGET_OS = xdarwin; then
AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
fi
AC_CHECK_HEADERS([endian.h sys/endian.h byteswap.h stdio.h stdlib.h unistd.h strings.h sys/types.h sys/stat.h sys/select.h sys/prctl.h])
AC_CHECK_DECLS([strnlen])
# Check for daemon(3), unrelated to --with-daemon (although used by it)
AC_CHECK_DECLS([daemon])
AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
[#if HAVE_ENDIAN_H
#include <endian.h>
#elif HAVE_SYS_ENDIAN_H
#include <sys/endian.h>
#endif])
AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
[#if HAVE_BYTESWAP_H
#include <byteswap.h>
#endif])
AC_CHECK_DECLS([__builtin_clz, __builtin_clzl, __builtin_clzll])
dnl Check for MSG_NOSIGNAL
AC_MSG_CHECKING(for MSG_NOSIGNAL)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
[[ int f = MSG_NOSIGNAL; ]])],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
[ AC_MSG_RESULT(no)]
)
dnl Check for MSG_DONTWAIT
AC_MSG_CHECKING(for MSG_DONTWAIT)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
[[ int f = MSG_DONTWAIT; ]])],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_DONTWAIT, 1,[Define this symbol if you have MSG_DONTWAIT]) ],
[ AC_MSG_RESULT(no)]
)
dnl Check for malloc_info (for memory statistics information in getmemoryinfo)
AC_MSG_CHECKING(for getmemoryinfo)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
[[ int f = malloc_info(0, NULL); ]])],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MALLOC_INFO, 1,[Define this symbol if you have malloc_info]) ],
[ AC_MSG_RESULT(no)]
)
dnl Check for mallopt(M_ARENA_MAX) (to set glibc arenas)
AC_MSG_CHECKING(for mallopt M_ARENA_MAX)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
[[ mallopt(M_ARENA_MAX, 1); ]])],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MALLOPT_ARENA_MAX, 1,[Define this symbol if you have mallopt with M_ARENA_MAX]) ],
[ AC_MSG_RESULT(no)]
)
AC_MSG_CHECKING([for visibility attribute])
AC_LINK_IFELSE([AC_LANG_SOURCE([
int foo_def( void ) __attribute__((visibility("default")));
int main(){}
])],
[
AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
AC_MSG_RESULT(yes)
],
[
AC_MSG_RESULT(no)
if test x$use_reduce_exports = xyes; then
AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
fi
]
)
TEMP_LDFLAGS="$LDFLAGS"
LDFLAGS="$TEMP_LDFLAGS $PTHREAD_CFLAGS"
AC_MSG_CHECKING([for thread_local support])
AC_LINK_IFELSE([AC_LANG_SOURCE([
#include <thread>
static thread_local int foo = 0;
static void run_thread() { foo++;}
int main(){
for(int i = 0; i < 10; i++) { std::thread(run_thread).detach();}
return foo;
}
])],
[
AC_DEFINE(HAVE_THREAD_LOCAL,1,[Define if thread_local is supported.])
AC_MSG_RESULT(yes)
],
[
AC_MSG_RESULT(no)
]
)
LDFLAGS="$TEMP_LDFLAGS"
# Check for different ways of gathering OS randomness
AC_MSG_CHECKING(for Linux getrandom syscall)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
#include <sys/syscall.h>
#include <linux/random.h>]],
[[ syscall(SYS_getrandom, nullptr, 32, 0); ]])],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYS_GETRANDOM, 1,[Define this symbol if the Linux getrandom system call is available]) ],
[ AC_MSG_RESULT(no)]
)
AC_MSG_CHECKING(for getentropy)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
[[ getentropy(nullptr, 32) ]])],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_GETENTROPY, 1,[Define this symbol if the BSD getentropy system call is available]) ],
[ AC_MSG_RESULT(no)]
)
AC_MSG_CHECKING(for getentropy via random.h)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
#include <sys/random.h>]],
[[ getentropy(nullptr, 32) ]])],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_GETENTROPY_RAND, 1,[Define this symbol if the BSD getentropy system call is available with sys/random.h]) ],
[ AC_MSG_RESULT(no)]
)
AC_MSG_CHECKING(for sysctl KERN_ARND)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
#include <sys/sysctl.h>]],
[[ static const int name[2] = {CTL_KERN, KERN_ARND};
sysctl(name, 2, nullptr, nullptr, nullptr, 0); ]])],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL_ARND, 1,[Define this symbol if the BSD sysctl(KERN_ARND) is available]) ],
[ AC_MSG_RESULT(no)]
)
# Check for reduced exports
if test x$use_reduce_exports = xyes; then
AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
[AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
fi
LEVELDB_CPPFLAGS=
LIBLEVELDB=
LIBMEMENV=
AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
AC_SUBST(LEVELDB_CPPFLAGS)
AC_SUBST(LIBLEVELDB)
AC_SUBST(LIBMEMENV)
if test x$enable_wallet != xno; then
dnl Check for libdb_cxx only if wallet enabled
BITCOIN_FIND_BDB48
fi
dnl Check for libminiupnpc (optional)
if test x$use_upnp != xno; then
AC_CHECK_HEADERS(
[miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
[AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
[have_miniupnpc=no]
)
fi
BITCOIN_QT_INIT
dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
use_boost=no
else
use_boost=yes
fi
if test x$use_boost = xyes; then
dnl Minimum required Boost version
define(MINIMUM_REQUIRED_BOOST, 1.47.0)
dnl Check for boost libs
AX_BOOST_BASE([MINIMUM_REQUIRED_BOOST])
if test x$want_boost = xno; then
AC_MSG_ERROR([[only libbitcoinconsensus can be built without boost]])
fi
AX_BOOST_SYSTEM
AX_BOOST_FILESYSTEM
AX_BOOST_PROGRAM_OPTIONS
AX_BOOST_THREAD
AX_BOOST_CHRONO
dnl Boost 1.56 through 1.62 allow using std::atomic instead of its own atomic
dnl counter implementations. In 1.63 and later the std::atomic approach is default.
m4_pattern_allow(DBOOST_AC_USE_STD_ATOMIC) dnl otherwise it's treated like a macro
BOOST_CPPFLAGS="-DBOOST_SP_USE_STD_ATOMIC -DBOOST_AC_USE_STD_ATOMIC $BOOST_CPPFLAGS"
if test x$use_reduce_exports = xyes; then
AC_MSG_CHECKING([for working boost reduced exports])
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
@%:@include <boost/version.hpp>
]], [[
#if BOOST_VERSION >= 104900
// Everything is okay
#else
# error Boost version is too old
#endif
]])],[
AC_MSG_RESULT(yes)
],[
AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
])
CPPFLAGS="$TEMP_CPPFLAGS"
fi
fi
if test x$use_reduce_exports = xyes; then
CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
fi
if test x$use_tests = xyes; then
if test x$HEXDUMP = x; then
AC_MSG_ERROR(hexdump is required for tests)
fi
if test x$use_boost = xyes; then
AX_BOOST_UNIT_TEST_FRAMEWORK
dnl Determine if -DBOOST_TEST_DYN_LINK is needed
AC_MSG_CHECKING([for dynamic linked boost test])
TEMP_LIBS="$LIBS"
LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
AC_LINK_IFELSE([AC_LANG_SOURCE([
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
])],
[AC_MSG_RESULT(yes)]
[TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
[AC_MSG_RESULT(no)])
LIBS="$TEMP_LIBS"
CPPFLAGS="$TEMP_CPPFLAGS"
fi
fi
if test x$use_boost = xyes; then
BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
dnl using c++98 constructs. Unfortunately, this implementation detail leaked into
dnl the abi. This was fixed in 1.57.
dnl When building against that installed version using c++11, the headers pick up
dnl on the native c++11 scoped enum support and enable it, however it will fail to
dnl link. This can be worked around by disabling c++11 scoped enums if linking will
dnl fail.
dnl BOOST_NO_SCOPED_ENUMS was changed to BOOST_NO_CXX11_SCOPED_ENUMS in 1.51.
TEMP_LIBS="$LIBS"
LIBS="$BOOST_LIBS $LIBS"
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
AC_MSG_CHECKING([for mismatched boost c++11 scoped enums])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <boost/config.hpp>
#include <boost/version.hpp>
#if !defined(BOOST_NO_SCOPED_ENUMS) && !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && BOOST_VERSION < 105700
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_CXX11_SCOPED_ENUMS
#define CHECK
#endif
#include <boost/filesystem.hpp>
]],[[
#if defined(CHECK)
boost::filesystem::copy_file("foo", "bar");
#else
choke;
#endif
]])],
[AC_MSG_RESULT(mismatched); BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS"], [AC_MSG_RESULT(ok)])
LIBS="$TEMP_LIBS"
CPPFLAGS="$TEMP_CPPFLAGS"
dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
dnl a working version is available, else fall back to sleep. sleep was removed
dnl after 1.56.
dnl If neither is available, abort.
TEMP_LIBS="$LIBS"
LIBS="$BOOST_LIBS $LIBS"
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <boost/thread/thread.hpp>
#include <boost/version.hpp>
]],[[
#if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
#else
choke me
#endif
]])],
[boost_sleep=yes;
AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
[boost_sleep=no])
LIBS="$TEMP_LIBS"
CPPFLAGS="$TEMP_CPPFLAGS"
if test x$boost_sleep != xyes; then
TEMP_LIBS="$LIBS"
LIBS="$BOOST_LIBS $LIBS"
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <boost/version.hpp>
#include <boost/thread.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
]],[[
#if BOOST_VERSION <= 105600
boost::this_thread::sleep(boost::posix_time::milliseconds(0));
#else
choke me
#endif
]])],
[boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
[boost_sleep=no])
LIBS="$TEMP_LIBS"
CPPFLAGS="$TEMP_CPPFLAGS"
fi
if test x$boost_sleep != xyes; then
AC_MSG_ERROR(No working boost sleep implementation found.)
fi
fi
if test x$use_pkgconfig = xyes; then
: dnl
m4_ifdef(
[PKG_CHECK_MODULES],
[
PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
if test x$use_qr != xno; then
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
fi
if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono
gitextract_j7k39exp/
├── .gitattributes
├── .gitignore
├── .travis.yml
├── .tx/
│ └── config
├── CONTRIBUTING.md
├── COPYING
├── INSTALL.md
├── Makefile.am
├── README.md
├── autogen.sh
├── build-aux/
│ └── m4/
│ ├── ax_boost_base.m4
│ ├── ax_boost_chrono.m4
│ ├── ax_boost_filesystem.m4
│ ├── ax_boost_program_options.m4
│ ├── ax_boost_system.m4
│ ├── ax_boost_thread.m4
│ ├── ax_boost_unit_test_framework.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_check_link_flag.m4
│ ├── ax_check_preproc_flag.m4
│ ├── ax_cxx_compile_stdcxx.m4
│ ├── ax_gcc_func_attribute.m4
│ ├── ax_pthread.m4
│ ├── bitcoin_find_bdb48.m4
│ ├── bitcoin_qt.m4
│ ├── bitcoin_subdir_to_include.m4
│ └── l_atomic.m4
├── configure.ac
├── contrib/
│ ├── README.md
│ ├── bitcoin-cli.bash-completion
│ ├── bitcoin-qt.pro
│ ├── bitcoin-tx.bash-completion
│ ├── bitcoind.bash-completion
│ ├── debian/
│ │ ├── README.md
│ │ ├── bitcoin-qt.desktop
│ │ ├── bitcoin-qt.install
│ │ ├── bitcoin-qt.lintian-overrides
│ │ ├── bitcoin-qt.manpages
│ │ ├── bitcoin-qt.protocol
│ │ ├── bitcoin-tx.bash-completion
│ │ ├── bitcoin-tx.install
│ │ ├── bitcoin-tx.manpages
│ │ ├── bitcoind.bash-completion
│ │ ├── bitcoind.examples
│ │ ├── bitcoind.install
│ │ ├── bitcoind.lintian-overrides
│ │ ├── bitcoind.manpages
│ │ ├── changelog
│ │ ├── compat
│ │ ├── control
│ │ ├── copyright
│ │ ├── examples/
│ │ │ └── bitcoin.conf
│ │ ├── gbp.conf
│ │ ├── patches/
│ │ │ ├── README
│ │ │ └── series
│ │ ├── rules
│ │ ├── source/
│ │ │ └── format
│ │ └── watch
│ ├── devtools/
│ │ ├── README.md
│ │ ├── check-doc.py
│ │ ├── check-rpc-mappings.py
│ │ ├── clang-format-diff.py
│ │ ├── commit-script-check.sh
│ │ ├── copyright_header.py
│ │ ├── gen-manpages.sh
│ │ ├── git-subtree-check.sh
│ │ ├── github-merge.py
│ │ ├── lint-all.sh
│ │ ├── lint-python.sh
│ │ ├── lint-whitespace.sh
│ │ ├── optimize-pngs.py
│ │ ├── security-check.py
│ │ ├── split-debug.sh.in
│ │ ├── symbol-check.py
│ │ ├── test-security-check.py
│ │ └── update-translations.py
│ ├── filter-lcov.py
│ ├── gitian-build.sh
│ ├── gitian-descriptors/
│ │ ├── gitian-linux.yml
│ │ ├── gitian-osx-signer.yml
│ │ ├── gitian-osx.yml
│ │ ├── gitian-win-signer.yml
│ │ └── gitian-win.yml
│ ├── gitian-keys/
│ │ ├── Ghrog-pubkey.asc
│ │ ├── Ghrog-pubkey.pgp
│ │ ├── README.md
│ │ ├── cryptozeny-pubkey.asc
│ │ ├── cryptozeny-pubkey.pgp
│ │ ├── decryp2kanon-pubkey.asc
│ │ ├── decryp2kanon-pubkey.pgp
│ │ ├── ilmango-pubkey.asc
│ │ └── ilmango-pubkey.pgp
│ ├── init/
│ │ ├── README.md
│ │ ├── bitcoind.conf
│ │ ├── bitcoind.init
│ │ ├── bitcoind.openrc
│ │ ├── bitcoind.openrcconf
│ │ ├── bitcoind.service
│ │ └── org.bitcoin.bitcoind.plist
│ ├── install_db4.sh
│ ├── linearize/
│ │ ├── README.md
│ │ ├── example-linearize.cfg
│ │ ├── linearize-data.py
│ │ ├── linearize-hashes.py
│ │ └── linearize.cfg
│ ├── macdeploy/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── custom_dsstore.py
│ │ ├── detached-sig-apply.sh
│ │ ├── detached-sig-create.sh
│ │ ├── extract-osx-sdk.sh
│ │ ├── fancy.plist
│ │ └── macdeployqtplus
│ ├── qos/
│ │ ├── README.md
│ │ └── tc.sh
│ ├── rpm/
│ │ ├── README.md
│ │ ├── bitcoin.fc
│ │ ├── bitcoin.if
│ │ ├── bitcoin.spec
│ │ └── bitcoin.te
│ ├── seeds/
│ │ ├── README.md
│ │ ├── generate-seeds.py
│ │ ├── makeseeds.py
│ │ ├── nodes_main.txt
│ │ ├── nodes_test.txt
│ │ ├── seeds_main.txt
│ │ └── seeds_test.txt
│ ├── testgen/
│ │ ├── README.md
│ │ ├── base58.py
│ │ └── gen_base58_test_vectors.py
│ ├── tidy_datadir.sh
│ ├── valgrind.supp
│ ├── verify-commits/
│ │ ├── README.md
│ │ ├── allow-revsig-commits
│ │ ├── gpg.sh
│ │ ├── pre-push-hook.sh
│ │ ├── trusted-git-root
│ │ ├── trusted-keys
│ │ ├── trusted-sha512-root-commit
│ │ └── verify-commits.sh
│ ├── verifybinaries/
│ │ ├── README.md
│ │ └── verify.sh
│ ├── windeploy/
│ │ ├── detached-sig-create.sh
│ │ └── win-codesign.cert
│ └── zmq/
│ ├── zmq_sub.py
│ └── zmq_sub3.4.py
├── depends/
│ ├── .gitignore
│ ├── README.md
│ ├── builders/
│ │ ├── darwin.mk
│ │ ├── default.mk
│ │ └── linux.mk
│ ├── config.guess
│ ├── config.site.in
│ ├── config.sub
│ ├── description.md
│ ├── funcs.mk
│ ├── hosts/
│ │ ├── darwin.mk
│ │ ├── default.mk
│ │ ├── linux.mk
│ │ └── mingw32.mk
│ ├── packages/
│ │ ├── bdb.mk
│ │ ├── boost.mk
│ │ ├── dbus.mk
│ │ ├── expat.mk
│ │ ├── fontconfig.mk
│ │ ├── freetype.mk
│ │ ├── libICE.mk
│ │ ├── libSM.mk
│ │ ├── libX11.mk
│ │ ├── libXau.mk
│ │ ├── libXext.mk
│ │ ├── libevent.mk
│ │ ├── libxcb.mk
│ │ ├── miniupnpc.mk
│ │ ├── native_biplist.mk
│ │ ├── native_ccache.mk
│ │ ├── native_cctools.mk
│ │ ├── native_cdrkit.mk
│ │ ├── native_ds_store.mk
│ │ ├── native_libdmg-hfsplus.mk
│ │ ├── native_mac_alias.mk
│ │ ├── native_protobuf.mk
│ │ ├── openssl.mk
│ │ ├── packages.mk
│ │ ├── protobuf.mk
│ │ ├── qrencode.mk
│ │ ├── qt.mk
│ │ ├── xcb_proto.mk
│ │ ├── xextproto.mk
│ │ ├── xproto.mk
│ │ ├── xtrans.mk
│ │ ├── zeromq.mk
│ │ └── zlib.mk
│ ├── packages.md
│ └── patches/
│ └── qt/
│ └── mac-qmake.conf
├── doc/
│ ├── .gitignore
│ ├── Doxyfile.in
│ ├── README.md
│ ├── README_osx.md
│ ├── README_windows.txt
│ ├── REST-interface.md
│ ├── assets-attribution.md
│ ├── benchmarking.md
│ ├── bips.md
│ ├── build-netbsd.md
│ ├── build-openbsd.md
│ ├── build-osx.md
│ ├── build-unix.md
│ ├── build-windows.md
│ ├── dependencies.md
│ ├── developer-notes.md
│ ├── dnsseed-policy.md
│ ├── files.md
│ ├── fuzzing.md
│ ├── gitian-building.md
│ ├── init.md
│ ├── man/
│ │ ├── Makefile.am
│ │ ├── sugarchain-cli.1
│ │ ├── sugarchain-qt.1
│ │ ├── sugarchain-tx.1
│ │ └── sugarchaind.1
│ ├── reduce-traffic.md
│ ├── release-notes.md
│ ├── release-process.md
│ ├── shared-libraries.md
│ ├── tor.md
│ ├── translation_process.md
│ ├── translation_strings_policy.md
│ ├── travis-ci.md
│ └── zmq.md
├── libbitcoinconsensus.pc.in
├── share/
│ ├── genbuild.sh
│ ├── pixmaps/
│ │ ├── bitcoin128.xpm
│ │ ├── bitcoin16.xpm
│ │ ├── bitcoin256.xpm
│ │ ├── bitcoin32.xpm
│ │ └── bitcoin64.xpm
│ ├── qt/
│ │ ├── Info.plist.in
│ │ └── extract_strings_qt.py
│ ├── rpcauth/
│ │ ├── README.md
│ │ └── rpcauth.py
│ └── setup.nsi.in
├── src/
│ ├── .clang-format
│ ├── Makefile.am
│ ├── Makefile.bench.include
│ ├── Makefile.leveldb.include
│ ├── Makefile.qt.include
│ ├── Makefile.qttest.include
│ ├── Makefile.test.include
│ ├── addrdb.cpp
│ ├── addrdb.h
│ ├── addrman.cpp
│ ├── addrman.h
│ ├── amount.h
│ ├── arith_uint256.cpp
│ ├── arith_uint256.h
│ ├── base58.cpp
│ ├── base58.h
│ ├── bech32.cpp
│ ├── bech32.h
│ ├── bench/
│ │ ├── .gitignore
│ │ ├── Examples.cpp
│ │ ├── base58.cpp
│ │ ├── bench.cpp
│ │ ├── bench.h
│ │ ├── bench_bitcoin.cpp
│ │ ├── bench_sugarchain.sh
│ │ ├── ccoins_caching.cpp
│ │ ├── checkblock.cpp
│ │ ├── checkqueue.cpp
│ │ ├── coin_selection.cpp
│ │ ├── crypto_hash.cpp
│ │ ├── data/
│ │ │ └── block413567.raw
│ │ ├── lockedpool.cpp
│ │ ├── mempool_eviction.cpp
│ │ ├── perf.cpp
│ │ ├── perf.h
│ │ ├── prevector_destructor.cpp
│ │ ├── result/
│ │ │ ├── bench_sugarchain.html
│ │ │ └── bench_sugarchain.txt
│ │ ├── rollingbloom.cpp
│ │ └── verify_script.cpp
│ ├── bitcoin-cli-res.rc
│ ├── bitcoin-cli.cpp
│ ├── bitcoin-tx-res.rc
│ ├── bitcoin-tx.cpp
│ ├── bitcoind-res.rc
│ ├── bitcoind.cpp
│ ├── blockencodings.cpp
│ ├── blockencodings.h
│ ├── bloom.cpp
│ ├── bloom.h
│ ├── chain.cpp
│ ├── chain.h
│ ├── chainparams.cpp
│ ├── chainparams.h
│ ├── chainparamsbase.cpp
│ ├── chainparamsbase.h
│ ├── chainparamsseeds.h
│ ├── checkpoints.cpp
│ ├── checkpoints.h
│ ├── checkqueue.h
│ ├── clientversion.cpp
│ ├── clientversion.h
│ ├── coins.cpp
│ ├── coins.h
│ ├── compat/
│ │ ├── byteswap.h
│ │ ├── endian.h
│ │ ├── glibc_compat.cpp
│ │ ├── glibc_sanity.cpp
│ │ ├── glibcxx_sanity.cpp
│ │ ├── sanity.h
│ │ └── strnlen.cpp
│ ├── compat.h
│ ├── compressor.cpp
│ ├── compressor.h
│ ├── config/
│ │ └── .empty
│ ├── consensus/
│ │ ├── consensus.h
│ │ ├── merkle.cpp
│ │ ├── merkle.h
│ │ ├── params.h
│ │ ├── tx_verify.cpp
│ │ ├── tx_verify.h
│ │ └── validation.h
│ ├── core_io.h
│ ├── core_memusage.h
│ ├── core_read.cpp
│ ├── core_write.cpp
│ ├── crypto/
│ │ ├── aes.cpp
│ │ ├── aes.h
│ │ ├── chacha20.cpp
│ │ ├── chacha20.h
│ │ ├── common.h
│ │ ├── ctaes/
│ │ │ ├── COPYING
│ │ │ ├── README.md
│ │ │ ├── bench.c
│ │ │ ├── ctaes.c
│ │ │ ├── ctaes.h
│ │ │ └── test.c
│ │ ├── hmac_sha256.cpp
│ │ ├── hmac_sha256.h
│ │ ├── hmac_sha512.cpp
│ │ ├── hmac_sha512.h
│ │ ├── ripemd160.cpp
│ │ ├── ripemd160.h
│ │ ├── sha1.cpp
│ │ ├── sha1.h
│ │ ├── sha256.cpp
│ │ ├── sha256.h
│ │ ├── sha256_sse4.cpp
│ │ ├── sha512.cpp
│ │ ├── sha512.h
│ │ └── yespower-1.0.1/
│ │ ├── CHANGES
│ │ ├── PERFORMANCE
│ │ ├── README
│ │ ├── TESTS-OK
│ │ ├── benchmark.c
│ │ ├── insecure_memzero.h
│ │ ├── sha256.c
│ │ ├── sha256.h
│ │ ├── sysendian.h
│ │ ├── tests.c
│ │ ├── yespower-opt.c
│ │ ├── yespower-platform.c
│ │ ├── yespower-ref.c
│ │ └── yespower.h
│ ├── cuckoocache.h
│ ├── dbwrapper.cpp
│ ├── dbwrapper.h
│ ├── fs.cpp
│ ├── fs.h
│ ├── hash.cpp
│ ├── hash.h
│ ├── httprpc.cpp
│ ├── httprpc.h
│ ├── httpserver.cpp
│ ├── httpserver.h
│ ├── indirectmap.h
│ ├── init.cpp
│ ├── init.h
│ ├── key.cpp
│ ├── key.h
│ ├── keystore.cpp
│ ├── keystore.h
│ ├── leveldb/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── NEWS
│ │ ├── README.md
│ │ ├── TODO
│ │ ├── WINDOWS.md
│ │ ├── build_detect_platform
│ │ ├── db/
│ │ │ ├── autocompact_test.cc
│ │ │ ├── builder.cc
│ │ │ ├── builder.h
│ │ │ ├── c.cc
│ │ │ ├── c_test.c
│ │ │ ├── corruption_test.cc
│ │ │ ├── db_bench.cc
│ │ │ ├── db_impl.cc
│ │ │ ├── db_impl.h
│ │ │ ├── db_iter.cc
│ │ │ ├── db_iter.h
│ │ │ ├── db_test.cc
│ │ │ ├── dbformat.cc
│ │ │ ├── dbformat.h
│ │ │ ├── dbformat_test.cc
│ │ │ ├── dumpfile.cc
│ │ │ ├── fault_injection_test.cc
│ │ │ ├── filename.cc
│ │ │ ├── filename.h
│ │ │ ├── filename_test.cc
│ │ │ ├── leveldbutil.cc
│ │ │ ├── log_format.h
│ │ │ ├── log_reader.cc
│ │ │ ├── log_reader.h
│ │ │ ├── log_test.cc
│ │ │ ├── log_writer.cc
│ │ │ ├── log_writer.h
│ │ │ ├── memtable.cc
│ │ │ ├── memtable.h
│ │ │ ├── recovery_test.cc
│ │ │ ├── repair.cc
│ │ │ ├── skiplist.h
│ │ │ ├── skiplist_test.cc
│ │ │ ├── snapshot.h
│ │ │ ├── table_cache.cc
│ │ │ ├── table_cache.h
│ │ │ ├── version_edit.cc
│ │ │ ├── version_edit.h
│ │ │ ├── version_edit_test.cc
│ │ │ ├── version_set.cc
│ │ │ ├── version_set.h
│ │ │ ├── version_set_test.cc
│ │ │ ├── write_batch.cc
│ │ │ ├── write_batch_internal.h
│ │ │ └── write_batch_test.cc
│ │ ├── doc/
│ │ │ ├── bench/
│ │ │ │ ├── db_bench_sqlite3.cc
│ │ │ │ └── db_bench_tree_db.cc
│ │ │ ├── benchmark.html
│ │ │ ├── impl.md
│ │ │ ├── index.md
│ │ │ ├── log_format.md
│ │ │ └── table_format.md
│ │ ├── helpers/
│ │ │ └── memenv/
│ │ │ ├── memenv.cc
│ │ │ ├── memenv.h
│ │ │ └── memenv_test.cc
│ │ ├── include/
│ │ │ └── leveldb/
│ │ │ ├── c.h
│ │ │ ├── cache.h
│ │ │ ├── comparator.h
│ │ │ ├── db.h
│ │ │ ├── dumpfile.h
│ │ │ ├── env.h
│ │ │ ├── filter_policy.h
│ │ │ ├── iterator.h
│ │ │ ├── options.h
│ │ │ ├── slice.h
│ │ │ ├── status.h
│ │ │ ├── table.h
│ │ │ ├── table_builder.h
│ │ │ └── write_batch.h
│ │ ├── issues/
│ │ │ ├── issue178_test.cc
│ │ │ └── issue200_test.cc
│ │ ├── port/
│ │ │ ├── README
│ │ │ ├── atomic_pointer.h
│ │ │ ├── port.h
│ │ │ ├── port_example.h
│ │ │ ├── port_posix.cc
│ │ │ ├── port_posix.h
│ │ │ ├── port_posix_sse.cc
│ │ │ ├── port_win.cc
│ │ │ ├── port_win.h
│ │ │ ├── thread_annotations.h
│ │ │ └── win/
│ │ │ └── stdint.h
│ │ ├── table/
│ │ │ ├── block.cc
│ │ │ ├── block.h
│ │ │ ├── block_builder.cc
│ │ │ ├── block_builder.h
│ │ │ ├── filter_block.cc
│ │ │ ├── filter_block.h
│ │ │ ├── filter_block_test.cc
│ │ │ ├── format.cc
│ │ │ ├── format.h
│ │ │ ├── iterator.cc
│ │ │ ├── iterator_wrapper.h
│ │ │ ├── merger.cc
│ │ │ ├── merger.h
│ │ │ ├── table.cc
│ │ │ ├── table_builder.cc
│ │ │ ├── table_test.cc
│ │ │ ├── two_level_iterator.cc
│ │ │ └── two_level_iterator.h
│ │ └── util/
│ │ ├── arena.cc
│ │ ├── arena.h
│ │ ├── arena_test.cc
│ │ ├── bloom.cc
│ │ ├── bloom_test.cc
│ │ ├── cache.cc
│ │ ├── cache_test.cc
│ │ ├── coding.cc
│ │ ├── coding.h
│ │ ├── coding_test.cc
│ │ ├── comparator.cc
│ │ ├── crc32c.cc
│ │ ├── crc32c.h
│ │ ├── crc32c_test.cc
│ │ ├── env.cc
│ │ ├── env_posix.cc
│ │ ├── env_posix_test.cc
│ │ ├── env_posix_test_helper.h
│ │ ├── env_test.cc
│ │ ├── env_win.cc
│ │ ├── filter_policy.cc
│ │ ├── hash.cc
│ │ ├── hash.h
│ │ ├── hash_test.cc
│ │ ├── histogram.cc
│ │ ├── histogram.h
│ │ ├── logging.cc
│ │ ├── logging.h
│ │ ├── mutexlock.h
│ │ ├── options.cc
│ │ ├── posix_logger.h
│ │ ├── random.h
│ │ ├── status.cc
│ │ ├── testharness.cc
│ │ ├── testharness.h
│ │ ├── testutil.cc
│ │ └── testutil.h
│ ├── limitedmap.h
│ ├── memusage.h
│ ├── merkleblock.cpp
│ ├── merkleblock.h
│ ├── miner.cpp
│ ├── miner.h
│ ├── net.cpp
│ ├── net.h
│ ├── net_processing.cpp
│ ├── net_processing.h
│ ├── netaddress.cpp
│ ├── netaddress.h
│ ├── netbase.cpp
│ ├── netbase.h
│ ├── netmessagemaker.h
│ ├── noui.cpp
│ ├── noui.h
│ ├── obj/
│ │ └── .gitignore
│ ├── obj-test/
│ │ └── .gitignore
│ ├── policy/
│ │ ├── feerate.cpp
│ │ ├── feerate.h
│ │ ├── fees.cpp
│ │ ├── fees.h
│ │ ├── policy.cpp
│ │ ├── policy.h
│ │ ├── rbf.cpp
│ │ └── rbf.h
│ ├── pow.cpp
│ ├── pow.h
│ ├── prevector.h
│ ├── primitives/
│ │ ├── block.cpp
│ │ ├── block.h
│ │ ├── transaction.cpp
│ │ └── transaction.h
│ ├── protocol.cpp
│ ├── protocol.h
│ ├── pubkey.cpp
│ ├── pubkey.h
│ ├── qt/
│ │ ├── addressbookpage.cpp
│ │ ├── addressbookpage.h
│ │ ├── addresstablemodel.cpp
│ │ ├── addresstablemodel.h
│ │ ├── askpassphrasedialog.cpp
│ │ ├── askpassphrasedialog.h
│ │ ├── bantablemodel.cpp
│ │ ├── bantablemodel.h
│ │ ├── bitcoin.cpp
│ │ ├── bitcoin.qrc
│ │ ├── bitcoin_locale.qrc
│ │ ├── bitcoinaddressvalidator.cpp
│ │ ├── bitcoinaddressvalidator.h
│ │ ├── bitcoinamountfield.cpp
│ │ ├── bitcoinamountfield.h
│ │ ├── bitcoingui.cpp
│ │ ├── bitcoingui.h
│ │ ├── bitcoinstrings.cpp
│ │ ├── bitcoinunits.cpp
│ │ ├── bitcoinunits.h
│ │ ├── callback.h
│ │ ├── clientmodel.cpp
│ │ ├── clientmodel.h
│ │ ├── coincontroldialog.cpp
│ │ ├── coincontroldialog.h
│ │ ├── coincontroltreewidget.cpp
│ │ ├── coincontroltreewidget.h
│ │ ├── csvmodelwriter.cpp
│ │ ├── csvmodelwriter.h
│ │ ├── editaddressdialog.cpp
│ │ ├── editaddressdialog.h
│ │ ├── forms/
│ │ │ ├── addressbookpage.ui
│ │ │ ├── askpassphrasedialog.ui
│ │ │ ├── coincontroldialog.ui
│ │ │ ├── debugwindow.ui
│ │ │ ├── editaddressdialog.ui
│ │ │ ├── helpmessagedialog.ui
│ │ │ ├── intro.ui
│ │ │ ├── modaloverlay.ui
│ │ │ ├── openuridialog.ui
│ │ │ ├── optionsdialog.ui
│ │ │ ├── overviewpage.ui
│ │ │ ├── receivecoinsdialog.ui
│ │ │ ├── receiverequestdialog.ui
│ │ │ ├── sendcoinsdialog.ui
│ │ │ ├── sendcoinsentry.ui
│ │ │ ├── signverifymessagedialog.ui
│ │ │ └── transactiondescdialog.ui
│ │ ├── guiconstants.h
│ │ ├── guiutil.cpp
│ │ ├── guiutil.h
│ │ ├── intro.cpp
│ │ ├── intro.h
│ │ ├── locale/
│ │ │ ├── bitcoin_af.ts
│ │ │ ├── bitcoin_af_ZA.ts
│ │ │ ├── bitcoin_am.ts
│ │ │ ├── bitcoin_ar.ts
│ │ │ ├── bitcoin_be_BY.ts
│ │ │ ├── bitcoin_bg.ts
│ │ │ ├── bitcoin_bg_BG.ts
│ │ │ ├── bitcoin_bn.ts
│ │ │ ├── bitcoin_bs.ts
│ │ │ ├── bitcoin_ca.ts
│ │ │ ├── bitcoin_ca@valencia.ts
│ │ │ ├── bitcoin_ca_ES.ts
│ │ │ ├── bitcoin_cs.ts
│ │ │ ├── bitcoin_cs_CZ.ts
│ │ │ ├── bitcoin_cy.ts
│ │ │ ├── bitcoin_da.ts
│ │ │ ├── bitcoin_de.ts
│ │ │ ├── bitcoin_de_DE.ts
│ │ │ ├── bitcoin_el.ts
│ │ │ ├── bitcoin_el_GR.ts
│ │ │ ├── bitcoin_en.ts
│ │ │ ├── bitcoin_en_AU.ts
│ │ │ ├── bitcoin_en_GB.ts
│ │ │ ├── bitcoin_eo.ts
│ │ │ ├── bitcoin_es.ts
│ │ │ ├── bitcoin_es_419.ts
│ │ │ ├── bitcoin_es_AR.ts
│ │ │ ├── bitcoin_es_CL.ts
│ │ │ ├── bitcoin_es_CO.ts
│ │ │ ├── bitcoin_es_DO.ts
│ │ │ ├── bitcoin_es_ES.ts
│ │ │ ├── bitcoin_es_MX.ts
│ │ │ ├── bitcoin_es_UY.ts
│ │ │ ├── bitcoin_es_VE.ts
│ │ │ ├── bitcoin_et.ts
│ │ │ ├── bitcoin_et_EE.ts
│ │ │ ├── bitcoin_eu_ES.ts
│ │ │ ├── bitcoin_fa.ts
│ │ │ ├── bitcoin_fa_IR.ts
│ │ │ ├── bitcoin_fi.ts
│ │ │ ├── bitcoin_fr.ts
│ │ │ ├── bitcoin_fr_CA.ts
│ │ │ ├── bitcoin_fr_FR.ts
│ │ │ ├── bitcoin_gl.ts
│ │ │ ├── bitcoin_he.ts
│ │ │ ├── bitcoin_he_IL.ts
│ │ │ ├── bitcoin_hi_IN.ts
│ │ │ ├── bitcoin_hr.ts
│ │ │ ├── bitcoin_hu.ts
│ │ │ ├── bitcoin_hu_HU.ts
│ │ │ ├── bitcoin_id.ts
│ │ │ ├── bitcoin_id_ID.ts
│ │ │ ├── bitcoin_is.ts
│ │ │ ├── bitcoin_it.ts
│ │ │ ├── bitcoin_it_IT.ts
│ │ │ ├── bitcoin_ja.ts
│ │ │ ├── bitcoin_ja_JP.ts
│ │ │ ├── bitcoin_ka.ts
│ │ │ ├── bitcoin_kk_KZ.ts
│ │ │ ├── bitcoin_km_KH.ts
│ │ │ ├── bitcoin_ko.ts
│ │ │ ├── bitcoin_ko_KR.ts
│ │ │ ├── bitcoin_ku_IQ.ts
│ │ │ ├── bitcoin_ky.ts
│ │ │ ├── bitcoin_la.ts
│ │ │ ├── bitcoin_lt.ts
│ │ │ ├── bitcoin_lv_LV.ts
│ │ │ ├── bitcoin_mk_MK.ts
│ │ │ ├── bitcoin_ml.ts
│ │ │ ├── bitcoin_mn.ts
│ │ │ ├── bitcoin_mr_IN.ts
│ │ │ ├── bitcoin_ms.ts
│ │ │ ├── bitcoin_ms_MY.ts
│ │ │ ├── bitcoin_my.ts
│ │ │ ├── bitcoin_nb.ts
│ │ │ ├── bitcoin_nb_NO.ts
│ │ │ ├── bitcoin_ne.ts
│ │ │ ├── bitcoin_nl.ts
│ │ │ ├── bitcoin_nl_NL.ts
│ │ │ ├── bitcoin_pam.ts
│ │ │ ├── bitcoin_pl.ts
│ │ │ ├── bitcoin_pl_PL.ts
│ │ │ ├── bitcoin_pt.ts
│ │ │ ├── bitcoin_pt_BR.ts
│ │ │ ├── bitcoin_pt_PT.ts
│ │ │ ├── bitcoin_ro.ts
│ │ │ ├── bitcoin_ro_RO.ts
│ │ │ ├── bitcoin_ru.ts
│ │ │ ├── bitcoin_ru_RU.ts
│ │ │ ├── bitcoin_si.ts
│ │ │ ├── bitcoin_sk.ts
│ │ │ ├── bitcoin_sl_SI.ts
│ │ │ ├── bitcoin_sn.ts
│ │ │ ├── bitcoin_sq.ts
│ │ │ ├── bitcoin_sr.ts
│ │ │ ├── bitcoin_sr@latin.ts
│ │ │ ├── bitcoin_sv.ts
│ │ │ ├── bitcoin_ta.ts
│ │ │ ├── bitcoin_ta_IN.ts
│ │ │ ├── bitcoin_te.ts
│ │ │ ├── bitcoin_th.ts
│ │ │ ├── bitcoin_th_TH.ts
│ │ │ ├── bitcoin_tr.ts
│ │ │ ├── bitcoin_tr_TR.ts
│ │ │ ├── bitcoin_uk.ts
│ │ │ ├── bitcoin_ur_PK.ts
│ │ │ ├── bitcoin_uz@Cyrl.ts
│ │ │ ├── bitcoin_vi.ts
│ │ │ ├── bitcoin_vi_VN.ts
│ │ │ ├── bitcoin_zh-Hans.ts
│ │ │ ├── bitcoin_zh.ts
│ │ │ ├── bitcoin_zh_CN.ts
│ │ │ ├── bitcoin_zh_HK.ts
│ │ │ └── bitcoin_zh_TW.ts
│ │ ├── macdockiconhandler.h
│ │ ├── macdockiconhandler.mm
│ │ ├── macnotificationhandler.h
│ │ ├── macnotificationhandler.mm
│ │ ├── modaloverlay.cpp
│ │ ├── modaloverlay.h
│ │ ├── networkstyle.cpp
│ │ ├── networkstyle.h
│ │ ├── notificator.cpp
│ │ ├── notificator.h
│ │ ├── openuridialog.cpp
│ │ ├── openuridialog.h
│ │ ├── optionsdialog.cpp
│ │ ├── optionsdialog.h
│ │ ├── optionsmodel.cpp
│ │ ├── optionsmodel.h
│ │ ├── overviewpage.cpp
│ │ ├── overviewpage.h
│ │ ├── paymentrequest.proto
│ │ ├── paymentrequestplus.cpp
│ │ ├── paymentrequestplus.h
│ │ ├── paymentserver.cpp
│ │ ├── paymentserver.h
│ │ ├── peertablemodel.cpp
│ │ ├── peertablemodel.h
│ │ ├── platformstyle.cpp
│ │ ├── platformstyle.h
│ │ ├── qvalidatedlineedit.cpp
│ │ ├── qvalidatedlineedit.h
│ │ ├── qvaluecombobox.cpp
│ │ ├── qvaluecombobox.h
│ │ ├── receivecoinsdialog.cpp
│ │ ├── receivecoinsdialog.h
│ │ ├── receiverequestdialog.cpp
│ │ ├── receiverequestdialog.h
│ │ ├── recentrequeststablemodel.cpp
│ │ ├── recentrequeststablemodel.h
│ │ ├── res/
│ │ │ ├── bitcoin-qt-res.rc
│ │ │ ├── icons/
│ │ │ │ └── bitcoin.icns
│ │ │ └── movies/
│ │ │ └── makespinner.sh
│ │ ├── rpcconsole.cpp
│ │ ├── rpcconsole.h
│ │ ├── sendcoinsdialog.cpp
│ │ ├── sendcoinsdialog.h
│ │ ├── sendcoinsentry.cpp
│ │ ├── sendcoinsentry.h
│ │ ├── signverifymessagedialog.cpp
│ │ ├── signverifymessagedialog.h
│ │ ├── splashscreen.cpp
│ │ ├── splashscreen.h
│ │ ├── test/
│ │ │ ├── compattests.cpp
│ │ │ ├── compattests.h
│ │ │ ├── paymentrequestdata.h
│ │ │ ├── paymentservertests.cpp
│ │ │ ├── paymentservertests.h
│ │ │ ├── rpcnestedtests.cpp
│ │ │ ├── rpcnestedtests.h
│ │ │ ├── test_main.cpp
│ │ │ ├── uritests.cpp
│ │ │ ├── uritests.h
│ │ │ ├── wallettests.cpp
│ │ │ └── wallettests.h
│ │ ├── trafficgraphwidget.cpp
│ │ ├── trafficgraphwidget.h
│ │ ├── transactiondesc.cpp
│ │ ├── transactiondesc.h
│ │ ├── transactiondescdialog.cpp
│ │ ├── transactiondescdialog.h
│ │ ├── transactionfilterproxy.cpp
│ │ ├── transactionfilterproxy.h
│ │ ├── transactionrecord.cpp
│ │ ├── transactionrecord.h
│ │ ├── transactiontablemodel.cpp
│ │ ├── transactiontablemodel.h
│ │ ├── transactionview.cpp
│ │ ├── transactionview.h
│ │ ├── utilitydialog.cpp
│ │ ├── utilitydialog.h
│ │ ├── walletframe.cpp
│ │ ├── walletframe.h
│ │ ├── walletmodel.cpp
│ │ ├── walletmodel.h
│ │ ├── walletmodeltransaction.cpp
│ │ ├── walletmodeltransaction.h
│ │ ├── walletview.cpp
│ │ ├── walletview.h
│ │ ├── winshutdownmonitor.cpp
│ │ └── winshutdownmonitor.h
│ ├── random.cpp
│ ├── random.h
│ ├── rest.cpp
│ ├── reverse_iterator.h
│ ├── reverselock.h
│ ├── rpc/
│ │ ├── blockchain.cpp
│ │ ├── blockchain.h
│ │ ├── client.cpp
│ │ ├── client.h
│ │ ├── mining.cpp
│ │ ├── mining.h
│ │ ├── misc.cpp
│ │ ├── net.cpp
│ │ ├── protocol.cpp
│ │ ├── protocol.h
│ │ ├── rawtransaction.cpp
│ │ ├── register.h
│ │ ├── safemode.cpp
│ │ ├── safemode.h
│ │ ├── server.cpp
│ │ ├── server.h
│ │ ├── util.cpp
│ │ └── util.h
│ ├── scheduler.cpp
│ ├── scheduler.h
│ ├── script/
│ │ ├── bitcoinconsensus.cpp
│ │ ├── bitcoinconsensus.h
│ │ ├── interpreter.cpp
│ │ ├── interpreter.h
│ │ ├── ismine.cpp
│ │ ├── ismine.h
│ │ ├── script.cpp
│ │ ├── script.h
│ │ ├── script_error.cpp
│ │ ├── script_error.h
│ │ ├── sigcache.cpp
│ │ ├── sigcache.h
│ │ ├── sign.cpp
│ │ ├── sign.h
│ │ ├── standard.cpp
│ │ └── standard.h
│ ├── secp256k1/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── COPYING
│ │ ├── Makefile.am
│ │ ├── README.md
│ │ ├── TODO
│ │ ├── autogen.sh
│ │ ├── build-aux/
│ │ │ └── m4/
│ │ │ ├── ax_jni_include_dir.m4
│ │ │ ├── ax_prog_cc_for_build.m4
│ │ │ └── bitcoin_secp.m4
│ │ ├── configure.ac
│ │ ├── contrib/
│ │ │ ├── lax_der_parsing.c
│ │ │ ├── lax_der_parsing.h
│ │ │ ├── lax_der_privatekey_parsing.c
│ │ │ └── lax_der_privatekey_parsing.h
│ │ ├── include/
│ │ │ ├── secp256k1.h
│ │ │ ├── secp256k1_ecdh.h
│ │ │ └── secp256k1_recovery.h
│ │ ├── libsecp256k1.pc.in
│ │ ├── obj/
│ │ │ └── .gitignore
│ │ ├── sage/
│ │ │ ├── group_prover.sage
│ │ │ ├── secp256k1.sage
│ │ │ └── weierstrass_prover.sage
│ │ └── src/
│ │ ├── asm/
│ │ │ └── field_10x26_arm.s
│ │ ├── basic-config.h
│ │ ├── bench.h
│ │ ├── bench_ecdh.c
│ │ ├── bench_internal.c
│ │ ├── bench_recover.c
│ │ ├── bench_sign.c
│ │ ├── bench_verify.c
│ │ ├── ecdsa.h
│ │ ├── ecdsa_impl.h
│ │ ├── eckey.h
│ │ ├── eckey_impl.h
│ │ ├── ecmult.h
│ │ ├── ecmult_const.h
│ │ ├── ecmult_const_impl.h
│ │ ├── ecmult_gen.h
│ │ ├── ecmult_gen_impl.h
│ │ ├── ecmult_impl.h
│ │ ├── field.h
│ │ ├── field_10x26.h
│ │ ├── field_10x26_impl.h
│ │ ├── field_5x52.h
│ │ ├── field_5x52_asm_impl.h
│ │ ├── field_5x52_impl.h
│ │ ├── field_5x52_int128_impl.h
│ │ ├── field_impl.h
│ │ ├── gen_context.c
│ │ ├── group.h
│ │ ├── group_impl.h
│ │ ├── hash.h
│ │ ├── hash_impl.h
│ │ ├── java/
│ │ │ ├── org/
│ │ │ │ └── bitcoin/
│ │ │ │ ├── NativeSecp256k1.java
│ │ │ │ ├── NativeSecp256k1Test.java
│ │ │ │ ├── NativeSecp256k1Util.java
│ │ │ │ └── Secp256k1Context.java
│ │ │ ├── org_bitcoin_NativeSecp256k1.c
│ │ │ ├── org_bitcoin_NativeSecp256k1.h
│ │ │ ├── org_bitcoin_Secp256k1Context.c
│ │ │ └── org_bitcoin_Secp256k1Context.h
│ │ ├── modules/
│ │ │ ├── ecdh/
│ │ │ │ ├── Makefile.am.include
│ │ │ │ ├── main_impl.h
│ │ │ │ └── tests_impl.h
│ │ │ └── recovery/
│ │ │ ├── Makefile.am.include
│ │ │ ├── main_impl.h
│ │ │ └── tests_impl.h
│ │ ├── num.h
│ │ ├── num_gmp.h
│ │ ├── num_gmp_impl.h
│ │ ├── num_impl.h
│ │ ├── scalar.h
│ │ ├── scalar_4x64.h
│ │ ├── scalar_4x64_impl.h
│ │ ├── scalar_8x32.h
│ │ ├── scalar_8x32_impl.h
│ │ ├── scalar_impl.h
│ │ ├── scalar_low.h
│ │ ├── scalar_low_impl.h
│ │ ├── secp256k1.c
│ │ ├── testrand.h
│ │ ├── testrand_impl.h
│ │ ├── tests.c
│ │ ├── tests_exhaustive.c
│ │ └── util.h
│ ├── serialize.h
│ ├── streams.h
│ ├── support/
│ │ ├── allocators/
│ │ │ ├── secure.h
│ │ │ └── zeroafterfree.h
│ │ ├── cleanse.cpp
│ │ ├── cleanse.h
│ │ ├── events.h
│ │ ├── lockedpool.cpp
│ │ └── lockedpool.h
│ ├── sync.cpp
│ ├── sync.h
│ ├── test/
│ │ ├── DoS_tests.cpp
│ │ ├── README.md
│ │ ├── addrman_tests.cpp
│ │ ├── allocator_tests.cpp
│ │ ├── amount_tests.cpp
│ │ ├── arith_uint256_tests.cpp
│ │ ├── base32_tests.cpp
│ │ ├── base58_tests.cpp
│ │ ├── base64_tests.cpp
│ │ ├── bech32_tests.cpp
│ │ ├── bip32_tests.cpp
│ │ ├── blockchain_tests.cpp
│ │ ├── blockencodings_tests.cpp
│ │ ├── bloom_tests.cpp
│ │ ├── bswap_tests.cpp
│ │ ├── checkqueue_tests.cpp
│ │ ├── coins_tests.cpp
│ │ ├── compress_tests.cpp
│ │ ├── crypto_tests.cpp
│ │ ├── cuckoocache_tests.cpp
│ │ ├── data/
│ │ │ ├── README.md
│ │ │ ├── base58_encode_decode.json
│ │ │ ├── base58_keys_invalid.json
│ │ │ ├── base58_keys_valid.json
│ │ │ ├── script_tests.json
│ │ │ ├── sighash.json
│ │ │ ├── tx_invalid.json
│ │ │ └── tx_valid.json
│ │ ├── dbwrapper_tests.cpp
│ │ ├── getarg_tests.cpp
│ │ ├── hash_tests.cpp
│ │ ├── key_tests.cpp
│ │ ├── limitedmap_tests.cpp
│ │ ├── main_tests.cpp
│ │ ├── mempool_tests.cpp
│ │ ├── merkle_tests.cpp
│ │ ├── merkleblock_tests.cpp
│ │ ├── miner_tests.cpp
│ │ ├── multisig_tests.cpp
│ │ ├── net_tests.cpp
│ │ ├── netbase_tests.cpp
│ │ ├── pmt_tests.cpp
│ │ ├── policyestimator_tests.cpp
│ │ ├── pow_tests.cpp
│ │ ├── prevector_tests.cpp
│ │ ├── raii_event_tests.cpp
│ │ ├── random_tests.cpp
│ │ ├── reverselock_tests.cpp
│ │ ├── rpc_tests.cpp
│ │ ├── sanity_tests.cpp
│ │ ├── scheduler_tests.cpp
│ │ ├── script_P2SH_tests.cpp
│ │ ├── script_standard_tests.cpp
│ │ ├── script_tests.cpp
│ │ ├── scriptnum10.h
│ │ ├── scriptnum_tests.cpp
│ │ ├── serialize_tests.cpp
│ │ ├── sighash_tests.cpp
│ │ ├── sigopcount_tests.cpp
│ │ ├── skiplist_tests.cpp
│ │ ├── streams_tests.cpp
│ │ ├── test_bitcoin.cpp
│ │ ├── test_bitcoin.h
│ │ ├── test_bitcoin_fuzzy.cpp
│ │ ├── test_bitcoin_main.cpp
│ │ ├── timedata_tests.cpp
│ │ ├── torcontrol_tests.cpp
│ │ ├── transaction_tests.cpp
│ │ ├── txvalidation_tests.cpp
│ │ ├── txvalidationcache_tests.cpp
│ │ ├── uint256_tests.cpp
│ │ ├── util_tests.cpp
│ │ ├── validation_block_tests.cpp
│ │ └── versionbits_tests.cpp
│ ├── threadinterrupt.cpp
│ ├── threadinterrupt.h
│ ├── threadsafety.h
│ ├── timedata.cpp
│ ├── timedata.h
│ ├── tinyformat.h
│ ├── torcontrol.cpp
│ ├── torcontrol.h
│ ├── txdb.cpp
│ ├── txdb.h
│ ├── txmempool.cpp
│ ├── txmempool.h
│ ├── ui_interface.cpp
│ ├── ui_interface.h
│ ├── uint256.cpp
│ ├── uint256.h
│ ├── undo.h
│ ├── univalue/
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── COPYING
│ │ ├── Makefile.am
│ │ ├── README.md
│ │ ├── TODO
│ │ ├── autogen.sh
│ │ ├── build-aux/
│ │ │ └── m4/
│ │ │ └── .gitignore
│ │ ├── configure.ac
│ │ ├── include/
│ │ │ └── univalue.h
│ │ ├── lib/
│ │ │ ├── .gitignore
│ │ │ ├── univalue.cpp
│ │ │ ├── univalue_escapes.h
│ │ │ ├── univalue_get.cpp
│ │ │ ├── univalue_read.cpp
│ │ │ ├── univalue_utffilter.h
│ │ │ └── univalue_write.cpp
│ │ ├── pc/
│ │ │ ├── libunivalue-uninstalled.pc.in
│ │ │ └── libunivalue.pc.in
│ │ └── test/
│ │ ├── .gitignore
│ │ ├── fail1.json
│ │ ├── fail10.json
│ │ ├── fail11.json
│ │ ├── fail12.json
│ │ ├── fail13.json
│ │ ├── fail14.json
│ │ ├── fail15.json
│ │ ├── fail16.json
│ │ ├── fail17.json
│ │ ├── fail18.json
│ │ ├── fail19.json
│ │ ├── fail2.json
│ │ ├── fail20.json
│ │ ├── fail21.json
│ │ ├── fail22.json
│ │ ├── fail23.json
│ │ ├── fail24.json
│ │ ├── fail25.json
│ │ ├── fail26.json
│ │ ├── fail27.json
│ │ ├── fail28.json
│ │ ├── fail29.json
│ │ ├── fail3.json
│ │ ├── fail30.json
│ │ ├── fail31.json
│ │ ├── fail32.json
│ │ ├── fail33.json
│ │ ├── fail34.json
│ │ ├── fail35.json
│ │ ├── fail36.json
│ │ ├── fail37.json
│ │ ├── fail38.json
│ │ ├── fail39.json
│ │ ├── fail4.json
│ │ ├── fail40.json
│ │ ├── fail41.json
│ │ ├── fail42.json
│ │ ├── fail44.json
│ │ ├── fail5.json
│ │ ├── fail6.json
│ │ ├── fail7.json
│ │ ├── fail8.json
│ │ ├── fail9.json
│ │ ├── no_nul.cpp
│ │ ├── object.cpp
│ │ ├── pass1.json
│ │ ├── pass2.json
│ │ ├── pass3.json
│ │ ├── round1.json
│ │ ├── round2.json
│ │ ├── round3.json
│ │ ├── round4.json
│ │ ├── round5.json
│ │ ├── round6.json
│ │ ├── round7.json
│ │ ├── test_json.cpp
│ │ └── unitester.cpp
│ ├── util.cpp
│ ├── util.h
│ ├── utilmoneystr.cpp
│ ├── utilmoneystr.h
│ ├── utilstrencodings.cpp
│ ├── utilstrencodings.h
│ ├── utiltime.cpp
│ ├── utiltime.h
│ ├── validation.cpp
│ ├── validation.h
│ ├── validationinterface.cpp
│ ├── validationinterface.h
│ ├── version.h
│ ├── versionbits.cpp
│ ├── versionbits.h
│ ├── wallet/
│ │ ├── coincontrol.h
│ │ ├── crypter.cpp
│ │ ├── crypter.h
│ │ ├── db.cpp
│ │ ├── db.h
│ │ ├── feebumper.cpp
│ │ ├── feebumper.h
│ │ ├── fees.cpp
│ │ ├── fees.h
│ │ ├── init.cpp
│ │ ├── init.h
│ │ ├── rpcdump.cpp
│ │ ├── rpcwallet.cpp
│ │ ├── rpcwallet.h
│ │ ├── test/
│ │ │ ├── accounting_tests.cpp
│ │ │ ├── crypto_tests.cpp
│ │ │ ├── wallet_test_fixture.cpp
│ │ │ ├── wallet_test_fixture.h
│ │ │ └── wallet_tests.cpp
│ │ ├── wallet.cpp
│ │ ├── wallet.h
│ │ ├── walletdb.cpp
│ │ ├── walletdb.h
│ │ ├── walletutil.cpp
│ │ └── walletutil.h
│ ├── warnings.cpp
│ ├── warnings.h
│ └── zmq/
│ ├── zmqabstractnotifier.cpp
│ ├── zmqabstractnotifier.h
│ ├── zmqconfig.h
│ ├── zmqnotificationinterface.cpp
│ ├── zmqnotificationinterface.h
│ ├── zmqpublishnotifier.cpp
│ └── zmqpublishnotifier.h
└── test/
├── README.md
├── config.ini.in
├── functional/
│ ├── .gitignore
│ ├── README.md
│ ├── combine_logs.py
│ ├── combined_log_template.html
│ ├── create_cache.py
│ ├── example_test.py
│ ├── feature_assumevalid.py
│ ├── feature_bip68_sequence.py
│ ├── feature_bip9_softforks.py
│ ├── feature_block.py
│ ├── feature_cltv.py
│ ├── feature_config_args.py
│ ├── feature_csv_activation.py
│ ├── feature_dbcrash.py
│ ├── feature_dersig.py
│ ├── feature_fee_estimation.py
│ ├── feature_help.py
│ ├── feature_logging.py
│ ├── feature_maxuploadtarget.py
│ ├── feature_minchainwork.py
│ ├── feature_notifications.py
│ ├── feature_nulldummy.py
│ ├── feature_proxy.py
│ ├── feature_pruning.py
│ ├── feature_rbf.py
│ ├── feature_reindex.py
│ ├── feature_segwit.py
│ ├── feature_uacomment.py
│ ├── feature_versionbits_warning.py
│ ├── interface_bitcoin_cli.py
│ ├── interface_http.py
│ ├── interface_rest.py
│ ├── interface_zmq.py
│ ├── mempool_limit.py
│ ├── mempool_packages.py
│ ├── mempool_persist.py
│ ├── mempool_reorg.py
│ ├── mempool_resurrect.py
│ ├── mempool_spend_coinbase.py
│ ├── mining_basic.py
│ ├── mining_getblocktemplate_longpoll.py
│ ├── mining_prioritisetransaction.py
│ ├── p2p_compactblocks.py
│ ├── p2p_disconnect_ban.py
│ ├── p2p_feefilter.py
│ ├── p2p_fingerprint.py
│ ├── p2p_invalid_block.py
│ ├── p2p_invalid_tx.py
│ ├── p2p_leak.py
│ ├── p2p_mempool.py
│ ├── p2p_node_network_limited.py
│ ├── p2p_segwit.py
│ ├── p2p_sendheaders.py
│ ├── p2p_timeouts.py
│ ├── p2p_unrequested_blocks.py
│ ├── rpc_bind.py
│ ├── rpc_blockchain.py
│ ├── rpc_decodescript.py
│ ├── rpc_deprecated.py
│ ├── rpc_fundrawtransaction.py
│ ├── rpc_getchaintips.py
│ ├── rpc_invalidateblock.py
│ ├── rpc_listtransactions.py
│ ├── rpc_named_arguments.py
│ ├── rpc_net.py
│ ├── rpc_preciousblock.py
│ ├── rpc_rawtransaction.py
│ ├── rpc_signmessage.py
│ ├── rpc_signrawtransaction.py
│ ├── rpc_txoutproof.py
│ ├── rpc_uptime.py
│ ├── rpc_users.py
│ ├── test_framework/
│ │ ├── __init__.py
│ │ ├── address.py
│ │ ├── authproxy.py
│ │ ├── bignum.py
│ │ ├── blockstore.py
│ │ ├── blocktools.py
│ │ ├── comptool.py
│ │ ├── coverage.py
│ │ ├── key.py
│ │ ├── messages.py
│ │ ├── mininode.py
│ │ ├── netutil.py
│ │ ├── script.py
│ │ ├── segwit_addr.py
│ │ ├── siphash.py
│ │ ├── socks5.py
│ │ ├── test_framework.py
│ │ ├── test_node.py
│ │ └── util.py
│ ├── test_runner.py
│ ├── wallet_abandonconflict.py
│ ├── wallet_accounts.py
│ ├── wallet_address_types.py
│ ├── wallet_backup.py
│ ├── wallet_basic.py
│ ├── wallet_bumpfee.py
│ ├── wallet_disable.py
│ ├── wallet_dump.py
│ ├── wallet_encryption.py
│ ├── wallet_hd.py
│ ├── wallet_import_rescan.py
│ ├── wallet_importmulti.py
│ ├── wallet_importprunedfunds.py
│ ├── wallet_keypool.py
│ ├── wallet_keypool_topup.py
│ ├── wallet_listreceivedby.py
│ ├── wallet_listsinceblock.py
│ ├── wallet_multiwallet.py
│ ├── wallet_resendwallettransactions.py
│ ├── wallet_txn_clone.py
│ ├── wallet_txn_doublespend.py
│ └── wallet_zapwallettxes.py
└── util/
├── bitcoin-util-test.py
└── data/
├── bitcoin-util-test.json
├── blanktxv1.hex
├── blanktxv1.json
├── blanktxv2.hex
├── blanktxv2.json
├── tt-delin1-out.hex
├── tt-delin1-out.json
├── tt-delout1-out.hex
├── tt-delout1-out.json
├── tt-locktime317000-out.hex
├── tt-locktime317000-out.json
├── tx394b54bb.hex
├── txcreate1.hex
├── txcreate1.json
├── txcreate2.hex
├── txcreate2.json
├── txcreatedata1.hex
├── txcreatedata1.json
├── txcreatedata2.hex
├── txcreatedata2.json
├── txcreatedata_seq0.hex
├── txcreatedata_seq0.json
├── txcreatedata_seq1.hex
├── txcreatedata_seq1.json
├── txcreatemultisig1.hex
├── txcreatemultisig1.json
├── txcreatemultisig2.hex
├── txcreatemultisig2.json
├── txcreatemultisig3.hex
├── txcreatemultisig3.json
├── txcreatemultisig4.hex
├── txcreatemultisig4.json
├── txcreatemultisig5.json
├── txcreateoutpubkey1.hex
├── txcreateoutpubkey1.json
├── txcreateoutpubkey2.hex
├── txcreateoutpubkey2.json
├── txcreateoutpubkey3.hex
├── txcreateoutpubkey3.json
├── txcreatescript1.hex
├── txcreatescript1.json
├── txcreatescript2.hex
├── txcreatescript2.json
├── txcreatescript3.hex
├── txcreatescript3.json
├── txcreatescript4.hex
├── txcreatescript4.json
├── txcreatesignv1.hex
├── txcreatesignv1.json
└── txcreatesignv2.hex
Showing preview only (545K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6408 symbols across 714 files)
FILE: contrib/devtools/check-doc.py
function main (line 27) | def main():
FILE: contrib/devtools/check-rpc-mappings.py
class RPCCommand (line 27) | class RPCCommand:
method __init__ (line 28) | def __init__(self, name, args):
class RPCArgument (line 32) | class RPCArgument:
method __init__ (line 33) | def __init__(self, names, idx):
function parse_string (line 38) | def parse_string(s):
function process_commands (line 43) | def process_commands(fname):
function process_mapping (line 69) | def process_mapping(fname):
function main (line 92) | def main():
FILE: contrib/devtools/clang-format-diff.py
function main (line 83) | def main():
FILE: contrib/devtools/copyright_header.py
function applies_to_file (line 46) | def applies_to_file(filename):
function call_git_ls (line 56) | def call_git_ls():
function get_filenames_to_examine (line 60) | def get_filenames_to_examine():
function compile_copyright_regex (line 83) | def compile_copyright_regex(copyright_style, year_style, name):
function get_count_of_copyrights_of_any_style_any_holder (line 129) | def get_count_of_copyrights_of_any_style_any_holder(contents):
function file_has_dominant_style_copyright_for_holder (line 132) | def file_has_dominant_style_copyright_for_holder(contents, holder_name):
function file_has_year_list_style_copyright_for_holder (line 136) | def file_has_year_list_style_copyright_for_holder(contents, holder_name):
function file_has_without_c_style_copyright_for_holder (line 140) | def file_has_without_c_style_copyright_for_holder(contents, holder_name):
function read_file (line 148) | def read_file(filename):
function gather_file_info (line 151) | def gather_file_info(filename):
function print_filenames (line 183) | def print_filenames(filenames, verbose):
function print_report (line 189) | def print_report(file_infos, verbose):
function exec_report (line 262) | def exec_report(base_directory, verbose):
function report_cmd (line 286) | def report_cmd(argv):
function call_git_log (line 309) | def call_git_log(filename):
function get_git_change_years (line 313) | def get_git_change_years(filename):
function get_most_recent_git_change_year (line 320) | def get_most_recent_git_change_year(filename):
function read_file_lines (line 327) | def read_file_lines(filename):
function write_file_lines (line 333) | def write_file_lines(filename, file_lines):
function get_updatable_copyright_line (line 348) | def get_updatable_copyright_line(file_lines):
function parse_year_range (line 356) | def parse_year_range(year_range):
function year_range_to_str (line 363) | def year_range_to_str(start_year, end_year):
function create_updated_copyright_line (line 368) | def create_updated_copyright_line(line, last_git_change_year):
function update_updatable_copyright (line 385) | def update_updatable_copyright(filename):
function exec_update_header_year (line 401) | def exec_update_header_year(base_directory):
function print_file_action_message (line 441) | def print_file_action_message(filename, action):
function update_cmd (line 444) | def update_cmd(argv):
function get_header_lines (line 457) | def get_header_lines(header, start_year, end_year):
function get_cpp_header_lines_to_insert (line 468) | def get_cpp_header_lines_to_insert(start_year, end_year):
function get_python_header_lines_to_insert (line 477) | def get_python_header_lines_to_insert(start_year, end_year):
function get_git_change_year_range (line 484) | def get_git_change_year_range(filename):
function file_already_has_core_copyright (line 492) | def file_already_has_core_copyright(file_lines):
function file_has_hashbang (line 500) | def file_has_hashbang(file_lines):
function insert_python_header (line 507) | def insert_python_header(filename, file_lines, start_year, end_year):
function insert_cpp_header (line 517) | def insert_cpp_header(filename, file_lines, start_year, end_year):
function exec_insert_header (line 523) | def exec_insert_header(filename, style):
function insert_cmd (line 563) | def insert_cmd(argv):
FILE: contrib/devtools/github-merge.py
function git_config_get (line 43) | def git_config_get(option, default=None):
function retrieve_pr_info (line 52) | def retrieve_pr_info(repo,pull):
function ask_prompt (line 67) | def ask_prompt(text):
function get_symlink_files (line 74) | def get_symlink_files():
function tree_sha512sum (line 82) | def tree_sha512sum(commit='HEAD'):
function print_merge_details (line 131) | def print_merge_details(pull, title, branch, base_branch, head_branch):
function parse_arguments (line 135) | def parse_arguments():
function main (line 152) | def main():
FILE: contrib/devtools/optimize-pngs.py
function file_hash (line 15) | def file_hash(filename):
function content_hash (line 20) | def content_hash(filename):
FILE: contrib/devtools/security-check.py
function check_ELF_PIE (line 20) | def check_ELF_PIE(executable):
function get_ELF_program_headers (line 36) | def get_ELF_program_headers(executable):
function check_ELF_NX (line 65) | def check_ELF_NX(executable):
function check_ELF_RELRO (line 78) | def check_ELF_RELRO(executable):
function check_ELF_Canary (line 105) | def check_ELF_Canary(executable):
function get_PE_dll_characteristics (line 119) | def get_PE_dll_characteristics(executable):
function check_PE_DYNAMIC_BASE (line 143) | def check_PE_DYNAMIC_BASE(executable):
function check_PE_HIGH_ENTROPY_VA (line 151) | def check_PE_HIGH_ENTROPY_VA(executable):
function check_PE_NX (line 161) | def check_PE_NX(executable):
function identify_executable (line 180) | def identify_executable(executable):
FILE: contrib/devtools/symbol-check.py
class CPPFilt (line 74) | class CPPFilt(object):
method __init__ (line 80) | def __init__(self):
method __call__ (line 83) | def __call__(self, mangled):
method close (line 88) | def close(self):
function read_symbols (line 93) | def read_symbols(executable, imports=True):
function check_version (line 114) | def check_version(max_versions, version):
function read_libraries (line 125) | def read_libraries(filename):
FILE: contrib/devtools/test-security-check.py
function write_testcode (line 12) | def write_testcode(filename):
function call_security_check (line 23) | def call_security_check(cc, source, executable, options):
class TestSecurityChecks (line 29) | class TestSecurityChecks(unittest.TestCase):
method test_ELF (line 30) | def test_ELF(self):
method test_PE (line 47) | def test_PE(self):
FILE: contrib/devtools/update-translations.py
function check_at_repository_root (line 35) | def check_at_repository_root():
function fetch_all_translations (line 41) | def fetch_all_translations():
function find_format_specifiers (line 46) | def find_format_specifiers(s):
function split_format_specifiers (line 58) | def split_format_specifiers(specifiers):
function sanitize_string (line 79) | def sanitize_string(s):
function check_format_specifiers (line 83) | def check_format_specifiers(source, translation, errors, numerus):
function all_ts_files (line 102) | def all_ts_files(suffix=''):
function remove_invalid_characters (line 113) | def remove_invalid_characters(s):
function escape_cdata (line 120) | def escape_cdata(text):
function postprocess_translations (line 126) | def postprocess_translations(reduce_diff_hacks=False):
FILE: contrib/linearize/linearize-data.py
function hex_switchEndian (line 25) | def hex_switchEndian(s):
function uint32 (line 30) | def uint32(x):
function bytereverse (line 33) | def bytereverse(x):
function bufreverse (line 37) | def bufreverse(in_buf):
function wordreverse (line 44) | def wordreverse(in_buf):
function calc_hdr_hash (line 51) | def calc_hdr_hash(blk_hdr):
function calc_hash_str (line 62) | def calc_hash_str(blk_hdr):
function get_blk_dt (line 69) | def get_blk_dt(blk_hdr):
function get_block_hashes (line 77) | def get_block_hashes(settings):
function mkblockmap (line 91) | def mkblockmap(blkindex):
class BlockDataCopier (line 100) | class BlockDataCopier:
method __init__ (line 101) | def __init__(self, settings, blkindex, blkmap):
method writeBlock (line 132) | def writeBlock(self, inhdr, blk_hdr, rawblock):
method inFileName (line 177) | def inFileName(self, fn):
method fetchBlock (line 180) | def fetchBlock(self, extent):
method copyOneBlock (line 186) | def copyOneBlock(self):
method run (line 198) | def run(self):
FILE: contrib/linearize/linearize-hashes.py
function hex_switchEndian (line 25) | def hex_switchEndian(s):
class BitcoinRPC (line 30) | class BitcoinRPC:
method __init__ (line 31) | def __init__(self, host, port, username, password):
method execute (line 37) | def execute(self, obj):
method build_request (line 57) | def build_request(idx, method, params):
method response_is_error (line 68) | def response_is_error(resp_obj):
function get_block_hashes (line 71) | def get_block_hashes(settings, max_blocks_per_call=10000):
function get_rpc_cookie (line 98) | def get_rpc_cookie():
FILE: contrib/seeds/generate-seeds.py
function name_to_ipv6 (line 45) | def name_to_ipv6(addr):
function parse_spec (line 75) | def parse_spec(s, defaultport):
function process_nodes (line 95) | def process_nodes(g, f, structname, defaultport):
function main (line 114) | def main():
FILE: contrib/seeds/makeseeds.py
function parseline (line 34) | def parseline(line):
function filtermultiport (line 101) | def filtermultiport(ips):
function filterbyasn (line 109) | def filterbyasn(ips, max_per_asn, max_total):
function main (line 139) | def main():
FILE: contrib/testgen/base58.py
class SHA256 (line 12) | class SHA256:
function ord (line 17) | def ord(c):
function chr (line 19) | def chr(n):
function b58encode (line 26) | def b58encode(v):
function b58decode (line 49) | def b58decode(v, length = None):
function checksum (line 74) | def checksum(v):
function b58encode_chk (line 78) | def b58encode_chk(v):
function b58decode_chk (line 82) | def b58decode_chk(v):
function get_bcaddress_version (line 92) | def get_bcaddress_version(strAddress):
FILE: contrib/testgen/gen_base58_test_vectors.py
function is_valid (line 43) | def is_valid(v):
function gen_valid_vectors (line 56) | def gen_valid_vectors():
function gen_invalid_vector (line 68) | def gen_invalid_vector(template, corrupt_prefix, randomize_payload_size,...
function randbool (line 87) | def randbool(p = 0.5):
function gen_invalid_vectors (line 91) | def gen_invalid_vectors():
FILE: contrib/zmq/zmq_sub.py
class ZMQHandler (line 39) | class ZMQHandler():
method __init__ (line 40) | def __init__(self):
method handle (line 51) | async def handle(self) :
method start (line 74) | def start(self):
method stop (line 79) | def stop(self):
FILE: contrib/zmq/zmq_sub3.4.py
class ZMQHandler (line 43) | class ZMQHandler():
method __init__ (line 44) | def __init__(self):
method handle (line 56) | def handle(self) :
method start (line 79) | def start(self):
method stop (line 84) | def stop(self):
FILE: share/qt/extract_strings_qt.py
function parse_po (line 18) | def parse_po(text):
FILE: src/addrdb.cpp
function SerializeDB (line 20) | bool SerializeDB(Stream& stream, const Data& data)
function SerializeFileDB (line 36) | bool SerializeFileDB(const std::string& prefix, const fs::path& path, co...
function DeserializeDB (line 63) | bool DeserializeDB(Stream& stream, Data& data, bool fCheckSum = true)
function DeserializeFileDB (line 94) | bool DeserializeFileDB(const fs::path& path, Data& data)
FILE: src/addrdb.h
type BanReason (line 19) | typedef enum BanReason
function class (line 26) | class CBanEntry
function SetNull (line 56) | void SetNull()
type std (line 77) | typedef std::map<CSubNet, CBanEntry> banmap_t;
function class (line 80) | class CAddrDB
function class (line 92) | class CBanDB
FILE: src/addrman.cpp
function CAddrInfo (line 68) | CAddrInfo* CAddrMan::Find(const CNetAddr& addr, int* pnId)
function CAddrInfo (line 81) | CAddrInfo* CAddrMan::Create(const CAddress& addr, const CNetAddr& addrSo...
function CAddrInfo (line 337) | CAddrInfo CAddrMan::Select_(bool newOnly)
FILE: src/addrman.h
function class (line 24) | class CAddrInfo : public CAddress
function Init (line 68) | void Init()
function GetNewBucket (line 96) | int GetNewBucket(const uint256 &nKey) const
function class (line 182) | class CAddrMan
function Clear (line 456) | void Clear()
function size (line 491) | size_t size() const
function Good (line 540) | void Good(const CService &addr, int64_t nTime = GetAdjustedTime())
function Attempt (line 549) | void Attempt(const CService &addr, bool fCountFailure, int64_t nTime = G...
function Connected (line 586) | void Connected(const CService &addr, int64_t nTime = GetAdjustedTime())
function SetServices (line 594) | void SetServices(const CService &addr, ServiceFlags nServices)
FILE: src/amount.h
type CAmount (line 13) | typedef int64_t CAmount;
function MoneyRange (line 34) | inline bool MoneyRange(const CAmount& nValue) { return (nValue >= 0 && n...
FILE: src/arith_uint256.cpp
function arith_uint256 (line 206) | arith_uint256& arith_uint256::SetCompact(uint32_t nCompact, bool* pfNega...
function uint256 (line 249) | uint256 ArithToUint256(const arith_uint256 &a)
function arith_uint256 (line 256) | arith_uint256 UintToArith256(const uint256 &a)
FILE: src/arith_uint256.h
function class (line 18) | class uint_error : public std::runtime_error {
function class (line 259) | class arith_uint256 : public base_uint<256> {
FILE: src/base58.cpp
function DecodeBase58 (line 24) | bool DecodeBase58(const char* psz, std::vector<unsigned char>& vch)
function EncodeBase58 (line 74) | std::string EncodeBase58(const unsigned char* pbegin, const unsigned cha...
function EncodeBase58 (line 114) | std::string EncodeBase58(const std::vector<unsigned char>& vch)
function DecodeBase58 (line 119) | bool DecodeBase58(const std::string& str, std::vector<unsigned char>& vc...
function EncodeBase58Check (line 124) | std::string EncodeBase58Check(const std::vector<unsigned char>& vchIn)
function DecodeBase58Check (line 133) | bool DecodeBase58Check(const char* psz, std::vector<unsigned char>& vchRet)
function DecodeBase58Check (line 150) | bool DecodeBase58Check(const std::string& str, std::vector<unsigned char...
class DestinationEncoder (line 218) | class DestinationEncoder : public boost::static_visitor<std::string>
method DestinationEncoder (line 224) | DestinationEncoder(const CChainParams& params) : m_params(params) {}
function CTxDestination (line 267) | CTxDestination DecodeDestination(const std::string& str, const CChainPar...
function CKey (line 334) | CKey CBitcoinSecret::GetKey()
function EncodeDestination (line 359) | std::string EncodeDestination(const CTxDestination& dest)
function CTxDestination (line 364) | CTxDestination DecodeDestination(const std::string& str)
function IsValidDestinationString (line 369) | bool IsValidDestinationString(const std::string& str, const CChainParams...
function IsValidDestinationString (line 374) | bool IsValidDestinationString(const std::string& str)
FILE: src/base58.h
function class (line 70) | class CBase58Data
function class (line 100) | class CBitcoinSecret : public CBase58Data
function K (line 122) | K GetKey() {
type CBitcoinExtKeyBase (line 142) | typedef CBitcoinExtKeyBase<CExtKey, BIP32_EXTKEY_SIZE, CChainParams::EXT...
type CBitcoinExtKeyBase (line 143) | typedef CBitcoinExtKeyBase<CExtPubKey, BIP32_EXTKEY_SIZE, CChainParams::...
FILE: src/bech32.cpp
function data (line 28) | data Cat(data x, const data& y)
function PolyMod (line 37) | uint32_t PolyMod(const data& v)
function LowerCase (line 97) | inline unsigned char LowerCase(unsigned char c)
function data (line 103) | data ExpandHRP(const std::string& hrp)
function VerifyChecksum (line 118) | bool VerifyChecksum(const std::string& hrp, const data& values)
function data (line 128) | data CreateChecksum(const std::string& hrp, const data& values)
type bech32 (line 143) | namespace bech32
function Encode (line 147) | std::string Encode(const std::string& hrp, const data& values) {
function Decode (line 159) | std::pair<std::string, data> Decode(const std::string& str) {
FILE: src/bech32.h
function namespace (line 16) | namespace bech32
FILE: src/bench/Examples.cpp
function Sleep7ms (line 11) | static void Sleep7ms(benchmark::State& state)
function Trig (line 25) | static void Trig(benchmark::State& state)
FILE: src/bench/base58.cpp
function Base58Encode (line 15) | static void Base58Encode(benchmark::State& state)
function Base58CheckEncode (line 30) | static void Base58CheckEncode(benchmark::State& state)
function Base58Decode (line 47) | static void Base58Decode(benchmark::State& state)
FILE: src/bench/bench.h
function namespace (line 41) | namespace benchmark {
type std (line 83) | typedef std::function<void(State&)> BenchFunction;
function class (line 85) | class BenchRunner
function class (line 101) | class Printer
function class (line 111) | class ConsolePrinter : public Printer
function class (line 120) | class PlotlyPrinter : public Printer
FILE: src/bench/bench_bitcoin.cpp
function main (line 25) | int
FILE: src/bench/ccoins_caching.cpp
function SetupDummyInputs (line 19) | static std::vector<CMutableTransaction>
function CCoinsCaching (line 56) | static void CCoinsCaching(benchmark::State& state)
FILE: src/bench/checkblock.cpp
type block_bench (line 12) | namespace block_bench {
function DeserializeBlockTest (line 20) | static void DeserializeBlockTest(benchmark::State& state)
function DeserializeAndCheckBlockTest (line 35) | static void DeserializeAndCheckBlockTest(benchmark::State& state)
FILE: src/bench/checkqueue.cpp
function CCheckQueueSpeedPrevectorJob (line 24) | static void CCheckQueueSpeedPrevectorJob(benchmark::State& state)
FILE: src/bench/coin_selection.cpp
function addCoin (line 10) | static void addCoin(const CAmount& nValue, const CWallet& wallet, std::v...
function CoinSelection (line 33) | static void CoinSelection(benchmark::State& state)
FILE: src/bench/crypto_hash.cpp
function RIPEMD160 (line 21) | static void RIPEMD160(benchmark::State& state)
function SHA1 (line 29) | static void SHA1(benchmark::State& state)
function SHA256 (line 37) | static void SHA256(benchmark::State& state)
function SHA256_32b (line 45) | static void SHA256_32b(benchmark::State& state)
function SHA512 (line 55) | static void SHA512(benchmark::State& state)
function SipHash_32b (line 63) | static void SipHash_32b(benchmark::State& state)
function FastRandom_32bit (line 72) | static void FastRandom_32bit(benchmark::State& state)
function FastRandom_1bit (line 81) | static void FastRandom_1bit(benchmark::State& state)
FILE: src/bench/lockedpool.cpp
function BenchLockedPool (line 16) | static void BenchLockedPool(benchmark::State& state)
FILE: src/bench/mempool_eviction.cpp
function AddTx (line 12) | static void AddTx(const CTransaction& tx, const CAmount& nFee, CTxMemPoo...
function MempoolEviction (line 27) | static void MempoolEviction(benchmark::State& state)
FILE: src/bench/perf.cpp
function perf_init (line 12) | void perf_init(void) { }
function perf_fini (line 13) | void perf_fini(void) { }
type perf_event_attr (line 22) | struct perf_event_attr
function perf_init (line 24) | void perf_init(void)
function perf_fini (line 31) | void perf_fini(void)
function perf_cpucycles (line 38) | uint64_t perf_cpucycles(void)
function perf_init (line 49) | void perf_init(void) { }
function perf_fini (line 50) | void perf_fini(void) { }
function perf_cpucycles (line 51) | uint64_t perf_cpucycles(void) { return 0; }
FILE: src/bench/perf.h
function perf_cpucycles (line 13) | static inline uint64_t perf_cpucycles(void)
function perf_cpucycles (line 22) | static inline uint64_t perf_cpucycles(void)
FILE: src/bench/prevector_destructor.cpp
function PrevectorDestructor (line 8) | static void PrevectorDestructor(benchmark::State& state)
function PrevectorClear (line 20) | static void PrevectorClear(benchmark::State& state)
FILE: src/bench/rollingbloom.cpp
function RollingBloom (line 10) | static void RollingBloom(benchmark::State& state)
FILE: src/bench/verify_script.cpp
function CMutableTransaction (line 17) | static CMutableTransaction BuildCreditingTransaction(const CScript& scri...
function CMutableTransaction (line 34) | static CMutableTransaction BuildSpendingTransaction(const CScript& scrip...
function VerifyScriptBench (line 53) | static void VerifyScriptBench(benchmark::State& state)
FILE: src/bitcoin-cli.cpp
function HelpMessageCli (line 32) | std::string HelpMessageCli()
class CConnectionFailed (line 66) | class CConnectionFailed : public std::runtime_error
method CConnectionFailed (line 70) | explicit inline CConnectionFailed(const std::string& msg) :
function AppInitRPC (line 80) | static int AppInitRPC(int argc, char* argv[])
type HTTPReply (line 132) | struct HTTPReply
method HTTPReply (line 134) | HTTPReply(): status(0), error(-1) {}
function http_request_done (line 163) | static void http_request_done(struct evhttp_request *req, void *ctx)
function http_error_cb (line 189) | static void http_error_cb(enum evhttp_request_error err, void *ctx)
class BaseRequestHandler (line 199) | class BaseRequestHandler
class GetinfoRequestHandler (line 207) | class GetinfoRequestHandler: public BaseRequestHandler
method UniValue (line 215) | UniValue PrepareRequest(const std::string& method, const std::vector<s...
method UniValue (line 228) | UniValue ProcessReply(const UniValue &batch_in) override
class DefaultRequestHandler (line 269) | class DefaultRequestHandler: public BaseRequestHandler {
method UniValue (line 271) | UniValue PrepareRequest(const std::string& method, const std::vector<s...
method UniValue (line 282) | UniValue ProcessReply(const UniValue &reply) override
function UniValue (line 288) | static UniValue CallRPC(BaseRequestHandler *rh, const std::string& strMe...
function CommandLineRPC (line 381) | int CommandLineRPC(int argc, char *argv[])
function main (line 488) | int main(int argc, char* argv[])
FILE: src/bitcoin-tx.cpp
function AppInitRawTx (line 38) | static int AppInitRawTx(int argc, char* argv[])
function RegisterSetJson (line 114) | static void RegisterSetJson(const std::string& key, const std::string& r...
function RegisterSet (line 125) | static void RegisterSet(const std::string& strInput)
function RegisterLoad (line 140) | static void RegisterLoad(const std::string& strInput)
function CAmount (line 181) | static CAmount ExtractAndValidateValue(const std::string& strValue)
function MutateTxVersion (line 189) | static void MutateTxVersion(CMutableTransaction& tx, const std::string& ...
function MutateTxLocktime (line 198) | static void MutateTxLocktime(CMutableTransaction& tx, const std::string&...
function MutateTxRBFOptIn (line 207) | static void MutateTxRBFOptIn(CMutableTransaction& tx, const std::string&...
function MutateTxAddInput (line 227) | static void MutateTxAddInput(CMutableTransaction& tx, const std::string&...
function MutateTxAddOutAddr (line 261) | static void MutateTxAddOutAddr(CMutableTransaction& tx, const std::strin...
function MutateTxAddOutPubKey (line 286) | static void MutateTxAddOutPubKey(CMutableTransaction& tx, const std::str...
function MutateTxAddOutMultiSig (line 330) | static void MutateTxAddOutMultiSig(CMutableTransaction& tx, const std::s...
function MutateTxAddOutData (line 404) | static void MutateTxAddOutData(CMutableTransaction& tx, const std::strin...
function MutateTxAddOutScript (line 431) | static void MutateTxAddOutScript(CMutableTransaction& tx, const std::str...
function MutateTxDelInput (line 476) | static void MutateTxDelInput(CMutableTransaction& tx, const std::string&...
function MutateTxDelOutput (line 489) | static void MutateTxDelOutput(CMutableTransaction& tx, const std::string...
function findSighashFlags (line 515) | static bool findSighashFlags(int& flags, const std::string& flagStr)
function CAmount (line 529) | static CAmount AmountFromValue(const UniValue& value)
function MutateTxSign (line 541) | static void MutateTxSign(CMutableTransaction& tx, const std::string& fla...
class Secp256k1Init (line 671) | class Secp256k1Init
method Secp256k1Init (line 676) | Secp256k1Init() {
function MutateTx (line 684) | static void MutateTx(CMutableTransaction& tx, const std::string& command,
function OutputTxJSON (line 732) | static void OutputTxJSON(const CTransaction& tx)
function OutputTxHash (line 741) | static void OutputTxHash(const CTransaction& tx)
function OutputTxHex (line 748) | static void OutputTxHex(const CTransaction& tx)
function OutputTx (line 755) | static void OutputTx(const CTransaction& tx)
function readStdin (line 765) | static std::string readStdin()
function CommandLineRawTx (line 785) | static int CommandLineRawTx(int argc, char* argv[])
function main (line 852) | int main(int argc, char* argv[])
FILE: src/bitcoind.cpp
function WaitForShutdown (line 42) | void WaitForShutdown()
function AppInit (line 58) | bool AppInit(int argc, char* argv[])
function main (line 179) | int main(int argc, char* argv[])
FILE: src/blockencodings.cpp
function ReadStatus (line 48) | ReadStatus PartiallyDownloadedBlock::InitData(const CBlockHeaderAndShort...
function ReadStatus (line 176) | ReadStatus PartiallyDownloadedBlock::FillBlock(CBlock& block, const std:...
FILE: src/blockencodings.h
type TransactionCompressor (line 15) | struct TransactionCompressor {
function class (line 29) | class BlockTransactionsRequest {
function class (line 71) | class BlockTransactions {
type PrefilledTransaction (line 103) | struct PrefilledTransaction {
type ReadStatus (line 122) | typedef enum ReadStatus_t
function class (line 131) | class CBlockHeaderAndShortTxIDs {
function class (line 194) | class PartiallyDownloadedBlock {
FILE: src/bloom.cpp
function RollingBloomHash (line 244) | static inline uint32_t RollingBloomHash(unsigned int nHashNum, uint32_t ...
FILE: src/bloom.h
type bloomflags (line 24) | enum bloomflags
function class (line 44) | class CBloomFilter
function class (line 119) | class CRollingBloomFilter
FILE: src/chain.cpp
function CBlockLocator (line 23) | CBlockLocator CChain::GetLocator(const CBlockIndex *pindex) const {
function CBlockIndex (line 51) | const CBlockIndex *CChain::FindFork(const CBlockIndex *pindex) const {
function CBlockIndex (line 62) | CBlockIndex* CChain::FindEarliestAtLeast(int64_t nTime) const
function InvertLowestOne (line 70) | int static inline InvertLowestOne(int n) { return n & (n - 1); }
function GetSkipHeight (line 73) | int static inline GetSkipHeight(int height) {
function CBlockIndex (line 83) | const CBlockIndex* CBlockIndex::GetAncestor(int height) const
function CBlockIndex (line 110) | CBlockIndex* CBlockIndex::GetAncestor(int height)
function arith_uint256 (line 121) | arith_uint256 GetBlockProof(const CBlockIndex& block)
function GetBlockProofEquivalentTime (line 136) | int64_t GetBlockProofEquivalentTime(const CBlockIndex& to, const CBlockI...
function CBlockIndex (line 155) | const CBlockIndex* LastCommonAncestor(const CBlockIndex* pa, const CBloc...
FILE: src/chain.h
function class (line 46) | class CBlockFileInfo
function SetNull (line 70) | void SetNull() {
function AddBlock (line 87) | void AddBlock(unsigned int nHeightIn, uint64_t nTimeIn) {
function CDiskBlockPos (line 100) | struct CDiskBlockPos
function SetNull (line 130) | void SetNull() { nFile = -1; nPos = 0; }
type BlockStatus (line 140) | enum BlockStatus: uint32_t {
function class (line 185) | class CBlockIndex
function CDiskBlockPos (line 295) | CDiskBlockPos GetUndoPos() const {
function GetMedianTimePast (line 344) | int64_t GetMedianTimePast() const
function IsValid (line 367) | bool IsValid(enum BlockStatus nUpTo = BLOCK_VALID_TRANSACTIONS) const
function RaiseValidity (line 377) | bool RaiseValidity(enum BlockStatus nUpTo)
function class (line 405) | class CDiskBlockIndex : public CBlockIndex
function class (line 470) | class CChain {
FILE: src/chainparams.cpp
function CBlock (line 21) | static CBlock CreateGenesisBlock(const char* pszTimestamp, const CScript...
function CBlock (line 94) | static CBlock CreateGenesisBlock(uint32_t nTime, uint32_t nNonce, uint32...
class CMainParams (line 121) | class CMainParams : public CChainParams {
method CMainParams (line 123) | CMainParams() {
class CTestNetParams (line 305) | class CTestNetParams : public CChainParams {
method CTestNetParams (line 307) | CTestNetParams() {
class CRegTestParams (line 478) | class CRegTestParams : public CChainParams {
method CRegTestParams (line 480) | CRegTestParams() {
function CChainParams (line 621) | const CChainParams &Params() {
function CreateChainParams (line 626) | std::unique_ptr<CChainParams> CreateChainParams(const std::string& chain)
function SelectParams (line 637) | void SelectParams(const std::string& network)
function UpdateVersionBitsParameters (line 643) | void UpdateVersionBitsParameters(Consensus::DeploymentPos d, int64_t nSt...
FILE: src/chainparams.h
type SeedSpec6 (line 17) | struct SeedSpec6 {
type std (line 22) | typedef std::map<int, uint256> MapCheckpoints;
type CCheckpointData (line 24) | struct CCheckpointData {
type ChainTxData (line 28) | struct ChainTxData {
function class (line 41) | class CChainParams
FILE: src/chainparamsbase.cpp
function AppendParamsHelpMessages (line 18) | void AppendParamsHelpMessages(std::string& strUsage, bool debugHelp)
class CBaseMainParams (line 31) | class CBaseMainParams : public CBaseChainParams
method CBaseMainParams (line 34) | CBaseMainParams()
class CBaseTestNetParams (line 43) | class CBaseTestNetParams : public CBaseChainParams
method CBaseTestNetParams (line 46) | CBaseTestNetParams()
class CBaseRegTestParams (line 56) | class CBaseRegTestParams : public CBaseChainParams
method CBaseRegTestParams (line 59) | CBaseRegTestParams()
function CBaseChainParams (line 68) | const CBaseChainParams& BaseParams()
function CreateBaseChainParams (line 74) | std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const std::strin...
function SelectBaseParams (line 86) | void SelectBaseParams(const std::string& chain)
function ChainNameFromCommandLine (line 91) | std::string ChainNameFromCommandLine()
FILE: src/chainparamsbase.h
function class (line 16) | class CBaseChainParams
FILE: src/checkpoints.cpp
type Checkpoints (line 15) | namespace Checkpoints {
function CBlockIndex (line 17) | CBlockIndex* GetLastCheckpoint(const CCheckpointData& data)
FILE: src/checkpoints.h
type CCheckpointData (line 13) | struct CCheckpointData
function namespace (line 19) | namespace Checkpoints
FILE: src/checkqueue.h
function Wait (line 140) | bool Wait()
function Add (line 146) | void Add(std::vector<T>& vChecks)
FILE: src/clientversion.cpp
function FormatVersion (line 71) | static std::string FormatVersion(int nVersion)
function FormatFullVersion (line 79) | std::string FormatFullVersion()
function FormatSubVersion (line 87) | std::string FormatSubVersion(const std::string& name, int nClientVersion...
FILE: src/coins.cpp
function uint256 (line 11) | uint256 CCoinsView::GetBestBlock() const { return uint256(); }
function CCoinsViewCursor (line 14) | CCoinsViewCursor *CCoinsView::Cursor() const { return nullptr; }
function uint256 (line 25) | uint256 CCoinsViewBacked::GetBestBlock() const { return base->GetBestBlo...
function CCoinsViewCursor (line 29) | CCoinsViewCursor *CCoinsViewBacked::Cursor() const { return base->Cursor...
function AddCoins (line 87) | void AddCoins(CCoinsViewCache& cache, const CTransaction &tx, int nHeigh...
function Coin (line 116) | const Coin& CCoinsViewCache::AccessCoin(const COutPoint &outpoint) const {
function uint256 (line 135) | uint256 CCoinsViewCache::GetBestBlock() const {
function CAmount (line 223) | CAmount CCoinsViewCache::GetValueIn(const CTransaction& tx) const
function Coin (line 250) | const Coin& AccessByTxid(const CCoinsViewCache& view, const uint256& txid)
FILE: src/coins.h
function class (line 29) | class Coin
function DynamicMemoryUsage (line 79) | size_t DynamicMemoryUsage() const {
function CCoinsViewCursor (line 103) | struct CCoinsCacheEntry
function GetValueSize (line 133) | virtual unsigned int GetValueSize() const = 0;
function class (line 182) | class CCoinsViewBacked : public CCoinsView
FILE: src/compat.h
type SOCKET (line 52) | typedef unsigned int SOCKET;
function IsSelectableSocket (line 89) | bool static inline IsSelectableSocket(const SOCKET& s) {
FILE: src/compat/byteswap.h
function bswap_16 (line 36) | inline uint16_t bswap_16(uint16_t x)
function bswap_32 (line 43) | inline uint32_t bswap_32(uint32_t x)
function bswap_64 (line 51) | inline uint64_t bswap_64(uint64_t x)
FILE: src/compat/endian.h
function htobe16 (line 70) | inline uint16_t htobe16(uint16_t host_16bits)
function htole16 (line 77) | inline uint16_t htole16(uint16_t host_16bits)
function be16toh (line 84) | inline uint16_t be16toh(uint16_t big_endian_16bits)
function le16toh (line 91) | inline uint16_t le16toh(uint16_t little_endian_16bits)
function htobe32 (line 98) | inline uint32_t htobe32(uint32_t host_32bits)
function htole32 (line 105) | inline uint32_t htole32(uint32_t host_32bits)
function be32toh (line 112) | inline uint32_t be32toh(uint32_t big_endian_32bits)
function le32toh (line 119) | inline uint32_t le32toh(uint32_t little_endian_32bits)
function htobe64 (line 126) | inline uint64_t htobe64(uint64_t host_64bits)
function htole64 (line 133) | inline uint64_t htole64(uint64_t host_64bits)
function be64toh (line 140) | inline uint64_t be64toh(uint64_t big_endian_64bits)
function le64toh (line 147) | inline uint64_t le64toh(uint64_t little_endian_64bits)
function htobe16 (line 156) | inline uint16_t htobe16(uint16_t host_16bits)
function htole16 (line 163) | inline uint16_t htole16(uint16_t host_16bits)
function be16toh (line 170) | inline uint16_t be16toh(uint16_t big_endian_16bits)
function le16toh (line 177) | inline uint16_t le16toh(uint16_t little_endian_16bits)
function htobe32 (line 184) | inline uint32_t htobe32(uint32_t host_32bits)
function htole32 (line 191) | inline uint32_t htole32(uint32_t host_32bits)
function be32toh (line 198) | inline uint32_t be32toh(uint32_t big_endian_32bits)
function le32toh (line 205) | inline uint32_t le32toh(uint32_t little_endian_32bits)
function htobe64 (line 212) | inline uint64_t htobe64(uint64_t host_64bits)
function htole64 (line 219) | inline uint64_t htole64(uint64_t host_64bits)
function be64toh (line 226) | inline uint64_t be64toh(uint64_t big_endian_64bits)
function le64toh (line 233) | inline uint64_t le64toh(uint64_t little_endian_64bits)
FILE: src/compat/glibc_compat.cpp
function FDELT_TYPE (line 23) | FDELT_TYPE __fdelt_warn(FDELT_TYPE a)
FILE: src/compat/glibc_sanity.cpp
function sanity_test_memcpy (line 29) | bool sanity_test_memcpy()
function sanity_test_fdelt (line 50) | bool sanity_test_fdelt()
function glibc_sanity_test (line 61) | bool glibc_sanity_test()
FILE: src/compat/glibcxx_sanity.cpp
function sanity_test_widen (line 14) | bool sanity_test_widen(char testchar)
function sanity_test_list (line 24) | bool sanity_test_list(unsigned int size)
function sanity_test_range_fmt (line 46) | bool sanity_test_range_fmt()
function glibcxx_sanity_test (line 58) | bool glibcxx_sanity_test()
FILE: src/compat/strnlen.cpp
function strnlen (line 12) | size_t strnlen( const char *start, size_t max_len)
FILE: src/compressor.h
function class (line 28) | class CScriptCompressor
function class (line 93) | class CTxOutCompressor
FILE: src/consensus/merkle.cpp
function MerkleComputation (line 46) | static void MerkleComputation(const std::vector<uint256>& leaves, uint25...
function uint256 (line 133) | uint256 ComputeMerkleRoot(const std::vector<uint256>& leaves, bool* muta...
function ComputeMerkleBranch (line 139) | std::vector<uint256> ComputeMerkleBranch(const std::vector<uint256>& lea...
function uint256 (line 145) | uint256 ComputeMerkleRootFromBranch(const uint256& leaf, const std::vect...
function uint256 (line 158) | uint256 BlockMerkleRoot(const CBlock& block, bool* mutated)
function uint256 (line 168) | uint256 BlockWitnessMerkleRoot(const CBlock& block, bool* mutated)
function BlockMerkleBranch (line 179) | std::vector<uint256> BlockMerkleBranch(const CBlock& block, uint32_t pos...
FILE: src/consensus/params.h
function namespace (line 17) | namespace Consensus {
FILE: src/consensus/tx_verify.cpp
function IsFinalTx (line 17) | bool IsFinalTx(const CTransaction &tx, int nBlockHeight, int64_t nBlockT...
function CalculateSequenceLocks (line 30) | std::pair<int, int64_t> CalculateSequenceLocks(const CTransaction &tx, i...
function EvaluateSequenceLocks (line 92) | bool EvaluateSequenceLocks(const CBlockIndex& block, std::pair<int, int6...
function SequenceLocks (line 102) | bool SequenceLocks(const CTransaction &tx, int flags, std::vector<int>* ...
function GetLegacySigOpCount (line 107) | unsigned int GetLegacySigOpCount(const CTransaction& tx)
function GetP2SHSigOpCount (line 121) | unsigned int GetP2SHSigOpCount(const CTransaction& tx, const CCoinsViewC...
function GetTransactionSigOpCost (line 138) | int64_t GetTransactionSigOpCost(const CTransaction& tx, const CCoinsView...
function CheckTransaction (line 159) | bool CheckTransaction(const CTransaction& tx, CValidationState &state, b...
FILE: src/consensus/tx_verify.h
function namespace (line 23) | namespace Consensus {
FILE: src/consensus/validation.h
function class (line 26) | class CValidationState {
function Error (line 59) | bool Error(const std::string& strRejectReasonIn) {
function IsInvalid (line 74) | bool IsInvalid(int &nDoSOut) const {
function SetCorruptionPossible (line 84) | void SetCorruptionPossible() {
function GetTransactionWeight (line 96) | static inline int64_t GetTransactionWeight(const CTransaction& tx)
function GetBlockWeight (line 100) | static inline int64_t GetBlockWeight(const CBlock& block)
FILE: src/core_io.h
type CMutableTransaction (line 16) | struct CMutableTransaction
FILE: src/core_memusage.h
function RecursiveDynamicUsage (line 12) | static inline size_t RecursiveDynamicUsage(const CScript& script) {
function RecursiveDynamicUsage (line 16) | static inline size_t RecursiveDynamicUsage(const COutPoint& out) {
function RecursiveDynamicUsage (line 20) | static inline size_t RecursiveDynamicUsage(const CTxIn& in) {
function RecursiveDynamicUsage (line 28) | static inline size_t RecursiveDynamicUsage(const CTxOut& out) {
function RecursiveDynamicUsage (line 32) | static inline size_t RecursiveDynamicUsage(const CTransaction& tx) {
function RecursiveDynamicUsage (line 43) | static inline size_t RecursiveDynamicUsage(const CMutableTransaction& tx) {
function RecursiveDynamicUsage (line 54) | static inline size_t RecursiveDynamicUsage(const CBlock& block) {
FILE: src/core_read.cpp
function CScript (line 22) | CScript ParseScript(const std::string& s)
function CheckTxScriptsSanity (line 91) | bool CheckTxScriptsSanity(const CMutableTransaction& tx)
function DecodeHexTx (line 111) | bool DecodeHexTx(CMutableTransaction& tx, const std::string& hex_tx, boo...
function DecodeHexBlk (line 146) | bool DecodeHexBlk(CBlock& block, const std::string& strHexBlk)
function uint256 (line 163) | uint256 ParseHashUV(const UniValue& v, const std::string& strName)
function uint256 (line 171) | uint256 ParseHashStr(const std::string& strHex, const std::string& strName)
function ParseHexUV (line 181) | std::vector<unsigned char> ParseHexUV(const UniValue& v, const std::stri...
FILE: src/core_write.cpp
function UniValue (line 19) | UniValue ValueFromAmount(const CAmount& amount)
function FormatScript (line 29) | std::string FormatScript(const CScript& script)
function ScriptToAsmStr (line 80) | std::string ScriptToAsmStr(const CScript& script, const bool fAttemptSig...
function EncodeHexTx (line 124) | std::string EncodeHexTx(const CTransaction& tx, const int serializeFlags)
function ScriptPubKeyToUniv (line 131) | void ScriptPubKeyToUniv(const CScript& scriptPubKey,
function TxToUniv (line 157) | void TxToUniv(const CTransaction& tx, const uint256& hashBlock, UniValue...
FILE: src/crypto/aes.cpp
function CBCEncrypt (line 77) | static int CBCEncrypt(const T& enc, const unsigned char iv[AES_BLOCKSIZE...
function CBCDecrypt (line 113) | static int CBCDecrypt(const T& dec, const unsigned char iv[AES_BLOCKSIZE...
FILE: src/crypto/aes.h
function class (line 19) | class AES128Encrypt
function class (line 31) | class AES128Decrypt
function class (line 43) | class AES256Encrypt
function class (line 55) | class AES256Decrypt
function class (line 66) | class AES256CBCEncrypt
function class (line 79) | class AES256CBCDecrypt
function class (line 92) | class AES128CBCEncrypt
function class (line 105) | class AES128CBCDecrypt
FILE: src/crypto/chacha20.cpp
function rotl32 (line 13) | constexpr static inline uint32_t rotl32(uint32_t v, int c) { return (v <...
FILE: src/crypto/chacha20.h
function class (line 12) | class ChaCha20
FILE: src/crypto/common.h
function ReadLE16 (line 17) | uint16_t static inline ReadLE16(const unsigned char* ptr)
function ReadLE32 (line 24) | uint32_t static inline ReadLE32(const unsigned char* ptr)
function ReadLE64 (line 31) | uint64_t static inline ReadLE64(const unsigned char* ptr)
function WriteLE16 (line 38) | void static inline WriteLE16(unsigned char* ptr, uint16_t x)
function WriteLE32 (line 44) | void static inline WriteLE32(unsigned char* ptr, uint32_t x)
function WriteLE64 (line 50) | void static inline WriteLE64(unsigned char* ptr, uint64_t x)
function ReadBE32 (line 56) | uint32_t static inline ReadBE32(const unsigned char* ptr)
function ReadBE64 (line 63) | uint64_t static inline ReadBE64(const unsigned char* ptr)
function WriteBE32 (line 70) | void static inline WriteBE32(unsigned char* ptr, uint32_t x)
function WriteBE64 (line 76) | void static inline WriteBE64(unsigned char* ptr, uint64_t x)
function CountBits (line 83) | uint64_t static inline CountBits(uint64_t x)
FILE: src/crypto/ctaes/bench.c
function gettimedouble (line 7) | static double gettimedouble(void) {
function print_number (line 13) | static void print_number(double x) {
function run_benchmark (line 26) | static void run_benchmark(char *name, void (*benchmark)(void*), void (*s...
function bench_AES128_init (line 59) | static void bench_AES128_init(void* data) {
function bench_AES128_encrypt_setup (line 67) | static void bench_AES128_encrypt_setup(void* data) {
function bench_AES128_encrypt (line 73) | static void bench_AES128_encrypt(void* data) {
function bench_AES128_decrypt (line 82) | static void bench_AES128_decrypt(void* data) {
function bench_AES192_init (line 91) | static void bench_AES192_init(void* data) {
function bench_AES192_encrypt_setup (line 99) | static void bench_AES192_encrypt_setup(void* data) {
function bench_AES192_encrypt (line 105) | static void bench_AES192_encrypt(void* data) {
function bench_AES192_decrypt (line 114) | static void bench_AES192_decrypt(void* data) {
function bench_AES256_init (line 123) | static void bench_AES256_init(void* data) {
function bench_AES256_encrypt_setup (line 132) | static void bench_AES256_encrypt_setup(void* data) {
function bench_AES256_encrypt (line 138) | static void bench_AES256_encrypt(void* data) {
function bench_AES256_decrypt (line 147) | static void bench_AES256_decrypt(void* data) {
function main (line 156) | int main(void) {
FILE: src/crypto/ctaes/ctaes.c
function LoadByte (line 25) | static void LoadByte(AES_state* s, unsigned char byte, int r, int c) {
function LoadBytes (line 34) | static void LoadBytes(AES_state *s, const unsigned char* data16) {
function SaveBytes (line 45) | static void SaveBytes(unsigned char* data16, const AES_state *s) {
function SubBytes (line 64) | static void SubBytes(AES_state *s, int inv) {
function ShiftRows (line 263) | static void ShiftRows(AES_state* s) {
function InvShiftRows (line 275) | static void InvShiftRows(AES_state* s) {
function MixColumns (line 289) | static void MixColumns(AES_state* s, int inv) {
function AddRoundKey (line 354) | static void AddRoundKey(AES_state* s, const AES_state* round) {
function GetOneColumn (line 362) | static void GetOneColumn(AES_state* s, const AES_state* a, int c) {
function KeySetupColumnMix (line 370) | static void KeySetupColumnMix(AES_state* s, AES_state* r, const AES_stat...
function KeySetupTransform (line 378) | static void KeySetupTransform(AES_state* s, const AES_state* r) {
function MultX (line 386) | static void MultX(AES_state* s) {
function AES_setup (line 407) | static void AES_setup(AES_state* rounds, const uint8_t* key, int nkeywor...
function AES_encrypt (line 449) | static void AES_encrypt(const AES_state* rounds, int nrounds, unsigned c...
function AES_decrypt (line 470) | static void AES_decrypt(const AES_state* rounds, int nrounds, unsigned c...
function AES128_init (line 497) | void AES128_init(AES128_ctx* ctx, const unsigned char* key16) {
function AES128_encrypt (line 501) | void AES128_encrypt(const AES128_ctx* ctx, size_t blocks, unsigned char*...
function AES128_decrypt (line 509) | void AES128_decrypt(const AES128_ctx* ctx, size_t blocks, unsigned char*...
function AES192_init (line 517) | void AES192_init(AES192_ctx* ctx, const unsigned char* key24) {
function AES192_encrypt (line 521) | void AES192_encrypt(const AES192_ctx* ctx, size_t blocks, unsigned char*...
function AES192_decrypt (line 530) | void AES192_decrypt(const AES192_ctx* ctx, size_t blocks, unsigned char*...
function AES256_init (line 538) | void AES256_init(AES256_ctx* ctx, const unsigned char* key32) {
function AES256_encrypt (line 542) | void AES256_encrypt(const AES256_ctx* ctx, size_t blocks, unsigned char*...
function AES256_decrypt (line 550) | void AES256_decrypt(const AES256_ctx* ctx, size_t blocks, unsigned char*...
FILE: src/crypto/ctaes/ctaes.h
type AES_state (line 13) | typedef struct {
type AES128_ctx (line 17) | typedef struct {
type AES192_ctx (line 21) | typedef struct {
type AES256_ctx (line 25) | typedef struct {
FILE: src/crypto/ctaes/test.c
type ctaes_test (line 13) | typedef struct {
function from_hex (line 41) | static void from_hex(unsigned char* data, int len, const char* hex) {
function main (line 60) | int main(void) {
FILE: src/crypto/hmac_sha256.h
function class (line 14) | class CHMAC_SHA256
FILE: src/crypto/hmac_sha512.h
function class (line 14) | class CHMAC_SHA512
FILE: src/crypto/ripemd160.cpp
type ripemd160 (line 15) | namespace ripemd160
function f1 (line 17) | uint32_t inline f1(uint32_t x, uint32_t y, uint32_t z) { return x ^ y ...
function f2 (line 18) | uint32_t inline f2(uint32_t x, uint32_t y, uint32_t z) { return (x & y...
function f3 (line 19) | uint32_t inline f3(uint32_t x, uint32_t y, uint32_t z) { return (x | ~...
function f4 (line 20) | uint32_t inline f4(uint32_t x, uint32_t y, uint32_t z) { return (x & z...
function f5 (line 21) | uint32_t inline f5(uint32_t x, uint32_t y, uint32_t z) { return x ^ (y...
function Initialize (line 24) | void inline Initialize(uint32_t* s)
function rol (line 33) | uint32_t inline rol(uint32_t x, int i) { return (x << i) | (x >> (32 -...
function Round (line 35) | void inline Round(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, ui...
function R11 (line 41) | void inline R11(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R21 (line 42) | void inline R21(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R31 (line 43) | void inline R31(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R41 (line 44) | void inline R41(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R51 (line 45) | void inline R51(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R12 (line 47) | void inline R12(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R22 (line 48) | void inline R22(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R32 (line 49) | void inline R32(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R42 (line 50) | void inline R42(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function R52 (line 51) | void inline R52(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
function Transform (line 54) | void Transform(uint32_t* s, const unsigned char* chunk)
function CRIPEMD160 (line 247) | CRIPEMD160& CRIPEMD160::Write(const unsigned char* data, size_t len)
function CRIPEMD160 (line 287) | CRIPEMD160& CRIPEMD160::Reset()
FILE: src/crypto/ripemd160.h
function class (line 12) | class CRIPEMD160
FILE: src/crypto/sha1.cpp
type sha1 (line 15) | namespace sha1
function Round (line 18) | void inline Round(uint32_t a, uint32_t& b, uint32_t c, uint32_t d, uin...
function f1 (line 24) | uint32_t inline f1(uint32_t b, uint32_t c, uint32_t d) { return d ^ (b...
function f2 (line 25) | uint32_t inline f2(uint32_t b, uint32_t c, uint32_t d) { return b ^ c ...
function f3 (line 26) | uint32_t inline f3(uint32_t b, uint32_t c, uint32_t d) { return (b & c...
function left (line 28) | uint32_t inline left(uint32_t x) { return (x << 1) | (x >> 31); }
function Initialize (line 31) | void inline Initialize(uint32_t* s)
function Transform (line 46) | void Transform(uint32_t* s, const unsigned char* chunk)
function CSHA1 (line 154) | CSHA1& CSHA1::Write(const unsigned char* data, size_t len)
function CSHA1 (line 194) | CSHA1& CSHA1::Reset()
FILE: src/crypto/sha1.h
function class (line 12) | class CSHA1
FILE: src/crypto/sha256.cpp
type sha256_sse4 (line 15) | namespace sha256_sse4
type sha256 (line 26) | namespace sha256
function Ch (line 28) | uint32_t inline Ch(uint32_t x, uint32_t y, uint32_t z) { return z ^ (x...
function Maj (line 29) | uint32_t inline Maj(uint32_t x, uint32_t y, uint32_t z) { return (x & ...
function Sigma0 (line 30) | uint32_t inline Sigma0(uint32_t x) { return (x >> 2 | x << 30) ^ (x >>...
function Sigma1 (line 31) | uint32_t inline Sigma1(uint32_t x) { return (x >> 6 | x << 26) ^ (x >>...
function sigma0 (line 32) | uint32_t inline sigma0(uint32_t x) { return (x >> 7 | x << 25) ^ (x >>...
function sigma1 (line 33) | uint32_t inline sigma1(uint32_t x) { return (x >> 17 | x << 15) ^ (x >...
function Round (line 36) | void inline Round(uint32_t a, uint32_t b, uint32_t c, uint32_t& d, uin...
function Initialize (line 45) | void inline Initialize(uint32_t* s)
function Transform (line 58) | void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)
function SelfTest (line 148) | bool SelfTest(TransformType tr) {
function SHA256AutoDetect (line 179) | std::string SHA256AutoDetect()
function CSHA256 (line 201) | CSHA256& CSHA256::Write(const unsigned char* data, size_t len)
function CSHA256 (line 244) | CSHA256& CSHA256::Reset()
FILE: src/crypto/sha256.h
function class (line 13) | class CSHA256
FILE: src/crypto/sha512.cpp
type sha512 (line 15) | namespace sha512
function Ch (line 17) | uint64_t inline Ch(uint64_t x, uint64_t y, uint64_t z) { return z ^ (x...
function Maj (line 18) | uint64_t inline Maj(uint64_t x, uint64_t y, uint64_t z) { return (x & ...
function Sigma0 (line 19) | uint64_t inline Sigma0(uint64_t x) { return (x >> 28 | x << 36) ^ (x >...
function Sigma1 (line 20) | uint64_t inline Sigma1(uint64_t x) { return (x >> 14 | x << 50) ^ (x >...
function sigma0 (line 21) | uint64_t inline sigma0(uint64_t x) { return (x >> 1 | x << 63) ^ (x >>...
function sigma1 (line 22) | uint64_t inline sigma1(uint64_t x) { return (x >> 19 | x << 45) ^ (x >...
function Round (line 25) | void inline Round(uint64_t a, uint64_t b, uint64_t c, uint64_t& d, uin...
function Initialize (line 34) | void inline Initialize(uint64_t* s)
function Transform (line 47) | void Transform(uint64_t* s, const unsigned char* chunk)
function CSHA512 (line 159) | CSHA512& CSHA512::Write(const unsigned char* data, size_t len)
function CSHA512 (line 202) | CSHA512& CSHA512::Reset()
FILE: src/crypto/sha512.h
function class (line 12) | class CSHA512
FILE: src/crypto/yespower-1.0.1/benchmark.c
function time_us (line 36) | static uint64_t time_us(void)
function main (line 50) | int main(int argc, const char * const *argv)
FILE: src/crypto/yespower-1.0.1/sha256.c
function be32enc_vect (line 52) | static void
function be32dec_vect (line 69) | static void
function SHA256_Transform (line 134) | static void
function SHA256_Pad (line 205) | static void
function SHA256_Init (line 243) | void
function _SHA256_Update (line 258) | static void
function SHA256_Update (line 299) | void
function _SHA256_Final (line 316) | static void
function SHA256_Final (line 329) | void
function SHA256_Buf (line 348) | void
function _HMAC_SHA256_Init (line 368) | static void
function HMAC_SHA256_Init (line 401) | void
function _HMAC_SHA256_Update (line 421) | static void
function HMAC_SHA256_Update (line 431) | void
function _HMAC_SHA256_Final (line 448) | static void
function HMAC_SHA256_Final (line 464) | void
function HMAC_SHA256_Buf (line 483) | void
function SHA256_Pad_Almost (line 502) | static int
function PBKDF2_SHA256 (line 533) | void
FILE: src/crypto/yespower-1.0.1/sha256.h
type SHA256_CTX (line 53) | typedef struct {
type HMAC_SHA256_CTX (line 85) | typedef struct {
FILE: src/crypto/yespower-1.0.1/sysendian.h
function be32dec (line 39) | static inline uint32_t
function be32enc (line 48) | static inline void
function be64enc (line 59) | static inline void
function le32dec (line 74) | static inline uint32_t
function le32enc (line 83) | static inline void
FILE: src/crypto/yespower-1.0.1/tests.c
function print_PBKDF2_SHA256_raw (line 33) | static void print_PBKDF2_SHA256_raw(const char *passwd, size_t passwdlen,
function print_PBKDF2_SHA256 (line 52) | static void print_PBKDF2_SHA256(const char *passwd,
function print_yespower (line 62) | static void print_yespower(yespower_version_t version, uint32_t N, uint3...
function print_yespower_loop (line 97) | static void print_yespower_loop(yespower_version_t version, const char *...
function main (line 139) | int main(void)
FILE: src/crypto/yespower-1.0.1/yespower-opt.c
type salsa20_blk_t (line 125) | typedef union {
function salsa20_simd_shuffle (line 133) | static inline void salsa20_simd_shuffle(const salsa20_blk_t *Bin,
function salsa20_simd_unshuffle (line 149) | static inline void salsa20_simd_unshuffle(const salsa20_blk_t *Bin,
function salsa20 (line 282) | static inline void salsa20(salsa20_blk_t *restrict B,
function blockmix_salsa (line 383) | static inline void blockmix_salsa(const salsa20_blk_t *restrict Bin,
function blockmix_salsa_xor (line 393) | static inline uint32_t blockmix_salsa_xor(const salsa20_blk_t *restrict ...
type pwxform_ctx_t (line 430) | typedef struct {
function blockmix (line 669) | static void blockmix(const salsa20_blk_t *restrict Bin,
function integerify (line 831) | static inline uint32_t integerify(const salsa20_blk_t *B, size_t r)
function smix2 (line 927) | static void smix2(uint8_t *B, size_t r, uint32_t N, uint32_t Nloop,
function smix (line 984) | static void smix(uint8_t *B, size_t r, uint32_t N,
function yespower (line 1029) | int yespower(yespower_local_t *local,
function yespower_tls (line 1129) | int yespower_tls(const uint8_t *src, size_t srclen,
function yespower_init_local (line 1143) | int yespower_init_local(yespower_local_t *local)
function yespower_free_local (line 1149) | int yespower_free_local(yespower_local_t *local)
FILE: src/crypto/yespower-1.0.1/yespower-platform.c
function init_region (line 89) | static inline void init_region(yespower_region_t *region)
function free_region (line 95) | static int free_region(yespower_region_t *region)
FILE: src/crypto/yespower-1.0.1/yespower-ref.c
function blkcpy (line 59) | static void blkcpy(uint32_t *dst, const uint32_t *src, size_t count)
function blkxor (line 66) | static void blkxor(uint32_t *dst, const uint32_t *src, size_t count)
function salsa20 (line 77) | static void salsa20(uint32_t B[16], uint32_t rounds)
function blockmix_salsa (line 126) | static void blockmix_salsa(uint32_t *B, uint32_t rounds)
type pwxform_ctx_t (line 168) | typedef struct {
function pwxform (line 181) | static void pwxform(uint32_t *B, pwxform_ctx_t *ctx)
function blockmix_pwxform (line 254) | static void blockmix_pwxform(uint32_t *B, pwxform_ctx_t *ctx, size_t r)
function integerify (line 301) | static uint32_t integerify(const uint32_t *B, size_t r)
function p2floor (line 315) | static uint32_t p2floor(uint32_t x)
function wrap (line 327) | static uint32_t wrap(uint32_t x, uint32_t i)
function smix1 (line 339) | static void smix1(uint32_t *B, size_t r, uint32_t N,
function smix2 (line 391) | static void smix2(uint32_t *B, size_t r, uint32_t N, uint32_t Nloop,
function smix (line 431) | static void smix(uint32_t *B, size_t r, uint32_t N,
function yespower (line 456) | int yespower(yespower_local_t *local,
function yespower_tls (line 562) | int yespower_tls(const uint8_t *src, size_t srclen,
function yespower_init_local (line 569) | int yespower_init_local(yespower_local_t *local)
function yespower_free_local (line 577) | int yespower_free_local(yespower_local_t *local)
FILE: src/crypto/yespower-1.0.1/yespower.h
type yespower_region_t (line 44) | typedef struct {
type yespower_region_t (line 52) | typedef yespower_region_t yespower_local_t;
type yespower_version_t (line 57) | typedef enum { YESPOWER_0_5 = 5, YESPOWER_1_0 = 10 } yespower_version_t;
type yespower_params_t (line 62) | typedef struct {
type yespower_binary_t (line 72) | typedef struct {
FILE: src/cuckoocache.h
function namespace (line 27) | namespace CuckooCache
function contains (line 467) | inline bool contains(const Element& e, const bool erase) const
FILE: src/dbwrapper.cpp
class CBitcoinLevelDBLogger (line 17) | class CBitcoinLevelDBLogger : public leveldb::Logger {
method Logv (line 21) | void Logv(const char * format, va_list ap) override {
function GetOptions (line 75) | static leveldb::Options GetOptions(size_t nCacheSize)
type dbwrapper_private (line 196) | namespace dbwrapper_private {
function HandleError (line 198) | void HandleError(const leveldb::Status& status)
FILE: src/dbwrapper.h
function class (line 22) | class dbwrapper_error : public std::runtime_error
function namespace (line 32) | namespace dbwrapper_private {
function class (line 47) | class CDBBatch
function class (line 117) | class CDBIterator
function class (line 176) | class CDBWrapper
FILE: src/fs.cpp
type fsbridge (line 3) | namespace fsbridge {
function FILE (line 5) | FILE *fopen(const fs::path& p, const char *mode)
function FILE (line 10) | FILE *freopen(const fs::path& p, const char *mode, FILE *stream)
FILE: src/fs.h
function namespace (line 22) | namespace fsbridge {
FILE: src/hash.cpp
function ROTL32 (line 10) | inline uint32_t ROTL32(uint32_t x, int8_t r)
function MurmurHash3 (line 15) | unsigned int MurmurHash3(unsigned int nHashSeed, const std::vector<unsig...
function BIP32Hash (line 71) | void BIP32Hash(const ChainCode &chainCode, unsigned int nChild, unsigned...
function CSipHasher (line 102) | CSipHasher& CSipHasher::Write(uint64_t data)
function CSipHasher (line 122) | CSipHasher& CSipHasher::Write(const unsigned char* data, size_t size)
function SipHashUint256 (line 168) | uint64_t SipHashUint256(uint64_t k0, uint64_t k1, const uint256& val)
function SipHashUint256Extra (line 208) | uint64_t SipHashUint256Extra(uint64_t k0, uint64_t k1, const uint256& va...
FILE: src/hash.h
type uint256 (line 18) | typedef uint256 ChainCode;
function class (line 21) | class CHash256 {
function class (line 45) | class CHash160 {
function uint256 (line 70) | uint256 Hash(const T1 pbegin, const T1 pend)
function uint256 (line 81) | uint256 Hash(const T1 p1begin, const T1 p1end,
function uint160 (line 93) | uint160 Hash160(const T1 pbegin, const T1 pend)
function uint160 (line 103) | inline uint160 Hash160(const std::vector<unsigned char>& vch)
function uint160 (line 110) | uint160 Hash160(const prevector<N, unsigned char>& vch)
function class (line 116) | class CHashWriter
function write (line 130) | void write(const char *pch, size_t size) {
function uint256 (line 135) | uint256 GetHash() {
function read (line 159) | void read(char* pch, size_t nSize)
function ignore (line 165) | void ignore(size_t nSize)
function class (line 198) | class CSipHasher
FILE: src/httprpc.cpp
class HTTPRPCTimer (line 30) | class HTTPRPCTimer : public RPCTimerBase
method HTTPRPCTimer (line 33) | HTTPRPCTimer(struct event_base* eventBase, std::function<void(void)>& ...
class HTTPRPCTimerInterface (line 45) | class HTTPRPCTimerInterface : public RPCTimerInterface
method HTTPRPCTimerInterface (line 48) | explicit HTTPRPCTimerInterface(struct event_base* _base) : base(_base)
method RPCTimerBase (line 55) | RPCTimerBase* NewTimer(std::function<void(void)>& func, int64_t millis...
type event_base (line 60) | struct event_base
function JSONErrorReply (line 69) | static void JSONErrorReply(HTTPRequest* req, const UniValue& objError, c...
function multiUserAuthorized (line 88) | static bool multiUserAuthorized(std::string strUserPass)
function RPCAuthorized (line 127) | static bool RPCAuthorized(const std::string& strAuth, std::string& strAu...
function HTTPReq_JSONRPC (line 147) | static bool HTTPReq_JSONRPC(HTTPRequest* req, const std::string &)
function InitRPCAuthentication (line 213) | static bool InitRPCAuthentication()
function StartHTTPRPC (line 231) | bool StartHTTPRPC()
function InterruptHTTPRPC (line 248) | void InterruptHTTPRPC()
function StopHTTPRPC (line 253) | void StopHTTPRPC()
FILE: src/httpserver.cpp
class HTTPWorkItem (line 45) | class HTTPWorkItem final : public HTTPClosure
method HTTPWorkItem (line 48) | HTTPWorkItem(std::unique_ptr<HTTPRequest> _req, const std::string &_pa...
class WorkQueue (line 68) | class WorkQueue
method WorkQueue (line 79) | explicit WorkQueue(size_t _maxDepth) : running(true),
method Enqueue (line 89) | bool Enqueue(WorkItem* item)
method Run (line 100) | void Run()
method Interrupt (line 117) | void Interrupt()
type HTTPPathHandler (line 125) | struct HTTPPathHandler
method HTTPPathHandler (line 127) | HTTPPathHandler() {}
method HTTPPathHandler (line 128) | HTTPPathHandler(std::string _prefix, bool _exactMatch, HTTPRequestHand...
type event_base (line 140) | struct event_base
type evhttp (line 142) | struct evhttp
function ClientAllowed (line 153) | static bool ClientAllowed(const CNetAddr& netaddr)
function InitHTTPAllowList (line 164) | static bool InitHTTPAllowList()
function RequestMethodString (line 192) | static std::string RequestMethodString(HTTPRequest::RequestMethod m)
function http_request_cb (line 213) | static void http_request_cb(struct evhttp_request* req, void* arg)
function http_reject_request_cb (line 275) | static void http_reject_request_cb(struct evhttp_request* req, void*)
function ThreadHTTP (line 282) | static bool ThreadHTTP(struct event_base* base, struct evhttp* http)
function HTTPBindAddresses (line 293) | static bool HTTPBindAddresses(struct evhttp* http)
function HTTPWorkQueueRun (line 331) | static void HTTPWorkQueueRun(WorkQueue<HTTPClosure>* queue)
function libevent_log_cb (line 338) | static void libevent_log_cb(int severity, const char *msg)
function InitHTTPServer (line 350) | bool InitHTTPServer()
function UpdateHTTPServerLogging (line 408) | bool UpdateHTTPServerLogging(bool enable) {
function StartHTTPServer (line 426) | bool StartHTTPServer()
function InterruptHTTPServer (line 441) | void InterruptHTTPServer()
function StopHTTPServer (line 456) | void StopHTTPServer()
type event_base (line 495) | struct event_base
function httpevent_callback_fn (line 500) | static void httpevent_callback_fn(evutil_socket_t, short, void* data)
type event_base (line 509) | struct event_base
type timeval (line 519) | struct timeval
type evhttp_request (line 526) | struct evhttp_request
type evkeyvalq (line 542) | struct evkeyvalq
type evbuffer (line 553) | struct evbuffer
type evkeyvalq (line 573) | struct evkeyvalq
type evbuffer (line 587) | struct evbuffer
function CService (line 610) | CService HTTPRequest::GetPeer()
function RegisterHTTPHandler (line 650) | void RegisterHTTPHandler(const std::string &prefix, bool exactMatch, con...
function UnregisterHTTPHandler (line 656) | void UnregisterHTTPHandler(const std::string &prefix, bool exactMatch)
function urlDecode (line 670) | std::string urlDecode(const std::string &urlEncoded) {
FILE: src/httpserver.h
type evhttp_request (line 16) | struct evhttp_request
type event_base (line 17) | struct event_base
type std (line 40) | typedef std::function<bool(HTTPRequest* req, const std::string &)> HTTPR...
type event_base (line 52) | struct event_base
function class (line 57) | class HTTPRequest
function class (line 121) | class HTTPClosure
function class (line 130) | class HTTPEvent
FILE: src/indirectmap.h
function const (line 9) | bool operator()(const T a, const T b) const { return *a < *b; }
type typename (line 28) | typedef typename base::const_iterator const_iterator;
type typename (line 29) | typedef typename base::size_type size_type;
type typename (line 30) | typedef typename base::value_type value_type;
function iterator (line 36) | iterator find(const K& key) { return m.find(&key); }
function const_iterator (line 37) | const_iterator find(const K& key) const { return m.find(&key); }
function iterator (line 38) | iterator lower_bound(const K& key) { return m.lower_bound(&...
function const_iterator (line 39) | const_iterator lower_bound(const K& key) const { return m.lower_bound(&...
function size_type (line 40) | size_type erase(const K& key) { return m.erase(&key); }
function size_type (line 41) | size_type count(const K& key) const { return m.count(&key); }
function clear (line 47) | void clear() { m.clear(); }
function iterator (line 48) | iterator begin() { return m.begin(); }
function iterator (line 49) | iterator end() { return m.end(); }
FILE: src/init.cpp
function StartShutdown (line 122) | void StartShutdown()
function ShutdownRequested (line 126) | bool ShutdownRequested()
class CCoinsViewErrorCatcher (line 136) | class CCoinsViewErrorCatcher final : public CCoinsViewBacked
method CCoinsViewErrorCatcher (line 139) | explicit CCoinsViewErrorCatcher(CCoinsView* view) : CCoinsViewBacked(v...
method GetCoin (line 140) | bool GetCoin(const COutPoint &outpoint, Coin &coin) const override {
function Interrupt (line 162) | void Interrupt()
function Shutdown (line 173) | void Shutdown()
function HandleSIGTERM (line 288) | static void HandleSIGTERM(int)
function HandleSIGHUP (line 293) | static void HandleSIGHUP(int)
function BOOL (line 298) | static BOOL WINAPI consoleCtrlHandler(DWORD dwCtrlType)
function registerSignalHandler (line 307) | static void registerSignalHandler(int signal, void(*handler)(int))
function OnRPCStarted (line 317) | void OnRPCStarted()
function OnRPCStopped (line 322) | void OnRPCStopped()
function HelpMessage (line 330) | std::string HelpMessage(HelpMessageMode mode)
function LicenseInfo (line 530) | std::string LicenseInfo()
function BlockNotifyCallback (line 566) | static void BlockNotifyCallback(bool initialSync, const CBlockIndex *pBl...
function BlockNotifyGenesisWait (line 582) | static void BlockNotifyGenesisWait(bool, const CBlockIndex *pBlockIndex)
type CImportingNow (line 593) | struct CImportingNow
method CImportingNow (line 595) | CImportingNow() {
function CleanupBlockRevFiles (line 613) | void CleanupBlockRevFiles()
function ThreadImport (line 648) | void ThreadImport(std::vector<fs::path> vImportFiles)
function InitSanityCheck (line 726) | bool InitSanityCheck(void)
function AppInitServers (line 744) | bool AppInitServers()
function InitParameterInteraction (line 762) | void InitParameterInteraction()
function ResolveErrMsg (line 825) | static std::string ResolveErrMsg(const char * const optname, const std::...
function InitLogging (line 830) | void InitLogging()
function new_handler_terminate (line 857) | [[noreturn]] static void new_handler_terminate()
function AppInitBasicSetup (line 870) | bool AppInitBasicSetup()
function AppInitParameterInteraction (line 920) | bool AppInitParameterInteraction()
function LockDataDirectory (line 1180) | static bool LockDataDirectory(bool probeOnly)
function AppInitSanityChecks (line 1190) | bool AppInitSanityChecks()
function AppInitLockDataDirectory (line 1211) | bool AppInitLockDataDirectory()
function AppInitMain (line 1223) | bool AppInitMain()
FILE: src/init.h
function namespace (line 14) | namespace boost
type HelpMessageMode (line 60) | enum HelpMessageMode {
FILE: src/key.cpp
function ec_privkey_import_der (line 35) | static int ec_privkey_import_der(const secp256k1_context* ctx, unsigned ...
function ec_privkey_export_der (line 92) | static int ec_privkey_export_der(const secp256k1_context *ctx, unsigned ...
function CPrivKey (line 166) | CPrivKey CKey::GetPrivKey() const {
function CPubKey (line 179) | CPubKey CKey::GetPubKey() const {
function CExtPubKey (line 287) | CExtPubKey CExtKey::Neuter() const {
function ECC_InitSanityCheck (line 316) | bool ECC_InitSanityCheck() {
function ECC_Start (line 323) | void ECC_Start() {
function ECC_Stop (line 340) | void ECC_Stop() {
FILE: src/key.h
type std (line 24) | typedef std::vector<unsigned char, secure_allocator<unsigned char> > CPr...
function class (line 27) | class CKey
function else (line 78) | else if (Check(&pbegin[0])) {
function CPrivKey (line 105) | CPrivKey GetPrivKey() const;
FILE: src/keystore.cpp
function ExtractPubKey (line 128) | static bool ExtractPubKey(const CScript &dest, CPubKey& pubKeyOut)
function CKeyID (line 181) | CKeyID GetKeyForDestination(const CKeyStore& store, const CTxDestination...
FILE: src/keystore.h
function virtual (line 33) | virtual std::set<CKeyID> GetKeys() const =0;
type std (line 82) | typedef std::vector<unsigned char, secure_allocator<unsigned char> > CKe...
type std (line 83) | typedef std::map<CKeyID, std::pair<CPubKey, std::vector<unsigned char> >...
FILE: src/leveldb/db/autocompact_test.cc
type leveldb (line 11) | namespace leveldb {
class AutoCompactTest (line 13) | class AutoCompactTest {
method AutoCompactTest (line 20) | AutoCompactTest() {
method Key (line 36) | std::string Key(int i) {
method Size (line 42) | uint64_t Size(const Slice& start, const Slice& limit) {
function TEST (line 106) | TEST(AutoCompactTest, ReadAll) {
function TEST (line 110) | TEST(AutoCompactTest, ReadHalf) {
function main (line 116) | int main(int argc, char** argv) {
FILE: src/leveldb/db/builder.cc
type leveldb (line 15) | namespace leveldb {
function Status (line 17) | Status BuildTable(const std::string& dbname,
FILE: src/leveldb/db/builder.h
function namespace (line 10) | namespace leveldb {
FILE: src/leveldb/db/c.cc
type leveldb_t (line 46) | struct leveldb_t { DB* rep; }
type leveldb_iterator_t (line 47) | struct leveldb_iterator_t { Iterator* rep; }
type leveldb_writebatch_t (line 48) | struct leveldb_writebatch_t { WriteBatch rep; }
type leveldb_snapshot_t (line 49) | struct leveldb_snapshot_t { const Snapshot* rep; }
type leveldb_readoptions_t (line 50) | struct leveldb_readoptions_t { ReadOptions rep; }
type leveldb_writeoptions_t (line 51) | struct leveldb_writeoptions_t { WriteOptions rep; }
type leveldb_options_t (line 52) | struct leveldb_options_t { Options rep; }
type leveldb_cache_t (line 53) | struct leveldb_cache_t { Cache* rep; }
type leveldb_seqfile_t (line 54) | struct leveldb_seqfile_t { SequentialFile* rep; }
type leveldb_randomfile_t (line 55) | struct leveldb_randomfile_t { RandomAccessFile* rep; }
type leveldb_writablefile_t (line 56) | struct leveldb_writablefile_t { WritableFile* rep; }
type leveldb_logger_t (line 57) | struct leveldb_logger_t { Logger* rep; }
type leveldb_filelock_t (line 58) | struct leveldb_filelock_t { FileLock* rep; }
type leveldb_comparator_t (line 60) | struct leveldb_comparator_t : public Comparator {
method Compare (line 73) | virtual int Compare(const Slice& a, const Slice& b) const {
method FindShortestSeparator (line 82) | virtual void FindShortestSeparator(std::string*, const Slice&) const { }
method FindShortSuccessor (line 83) | virtual void FindShortSuccessor(std::string* key) const { }
type leveldb_filterpolicy_t (line 86) | struct leveldb_filterpolicy_t : public FilterPolicy {
method CreateFilter (line 108) | virtual void CreateFilter(const Slice* keys, int n, std::string* dst) ...
method KeyMayMatch (line 121) | virtual bool KeyMayMatch(const Slice& key, const Slice& filter) const {
type leveldb_env_t (line 127) | struct leveldb_env_t {
function SaveError (line 132) | static bool SaveError(char** errptr, const Status& s) {
function leveldb_t (line 152) | leveldb_t* leveldb_open(
function leveldb_close (line 165) | void leveldb_close(leveldb_t* db) {
function leveldb_put (line 170) | void leveldb_put(
function leveldb_delete (line 180) | void leveldb_delete(
function leveldb_write (line 189) | void leveldb_write(
function leveldb_iterator_t (line 218) | leveldb_iterator_t* leveldb_create_iterator(
function leveldb_snapshot_t (line 226) | const leveldb_snapshot_t* leveldb_create_snapshot(
function leveldb_release_snapshot (line 233) | void leveldb_release_snapshot(
function leveldb_approximate_sizes (line 252) | void leveldb_approximate_sizes(
function leveldb_compact_range (line 267) | void leveldb_compact_range(
function leveldb_destroy_db (line 278) | void leveldb_destroy_db(
function leveldb_repair_db (line 285) | void leveldb_repair_db(
function leveldb_iter_destroy (line 292) | void leveldb_iter_destroy(leveldb_iterator_t* iter) {
function leveldb_iter_valid (line 297) | unsigned char leveldb_iter_valid(const leveldb_iterator_t* iter) {
function leveldb_iter_seek_to_first (line 301) | void leveldb_iter_seek_to_first(leveldb_iterator_t* iter) {
function leveldb_iter_seek_to_last (line 305) | void leveldb_iter_seek_to_last(leveldb_iterator_t* iter) {
function leveldb_iter_seek (line 309) | void leveldb_iter_seek(leveldb_iterator_t* iter, const char* k, size_t k...
function leveldb_iter_next (line 313) | void leveldb_iter_next(leveldb_iterator_t* iter) {
function leveldb_iter_prev (line 317) | void leveldb_iter_prev(leveldb_iterator_t* iter) {
function leveldb_iter_get_error (line 333) | void leveldb_iter_get_error(const leveldb_iterator_t* iter, char** errpt...
function leveldb_writebatch_t (line 337) | leveldb_writebatch_t* leveldb_writebatch_create() {
function leveldb_writebatch_destroy (line 341) | void leveldb_writebatch_destroy(leveldb_writebatch_t* b) {
function leveldb_writebatch_clear (line 345) | void leveldb_writebatch_clear(leveldb_writebatch_t* b) {
function leveldb_writebatch_put (line 349) | void leveldb_writebatch_put(
function leveldb_writebatch_delete (line 356) | void leveldb_writebatch_delete(
function leveldb_writebatch_iterate (line 362) | void leveldb_writebatch_iterate(
function leveldb_options_t (line 386) | leveldb_options_t* leveldb_options_create() {
function leveldb_options_destroy (line 390) | void leveldb_options_destroy(leveldb_options_t* options) {
function leveldb_options_set_comparator (line 394) | void leveldb_options_set_comparator(
function leveldb_options_set_filter_policy (line 400) | void leveldb_options_set_filter_policy(
function leveldb_options_set_create_if_missing (line 406) | void leveldb_options_set_create_if_missing(
function leveldb_options_set_error_if_exists (line 411) | void leveldb_options_set_error_if_exists(
function leveldb_options_set_paranoid_checks (line 416) | void leveldb_options_set_paranoid_checks(
function leveldb_options_set_env (line 421) | void leveldb_options_set_env(leveldb_options_t* opt, leveldb_env_t* env) {
function leveldb_options_set_info_log (line 425) | void leveldb_options_set_info_log(leveldb_options_t* opt, leveldb_logger...
function leveldb_options_set_write_buffer_size (line 429) | void leveldb_options_set_write_buffer_size(leveldb_options_t* opt, size_...
function leveldb_options_set_max_open_files (line 433) | void leveldb_options_set_max_open_files(leveldb_options_t* opt, int n) {
function leveldb_options_set_cache (line 437) | void leveldb_options_set_cache(leveldb_options_t* opt, leveldb_cache_t* ...
function leveldb_options_set_block_size (line 441) | void leveldb_options_set_block_size(leveldb_options_t* opt, size_t s) {
function leveldb_options_set_block_restart_interval (line 445) | void leveldb_options_set_block_restart_interval(leveldb_options_t* opt, ...
function leveldb_options_set_compression (line 449) | void leveldb_options_set_compression(leveldb_options_t* opt, int t) {
function leveldb_comparator_t (line 453) | leveldb_comparator_t* leveldb_comparator_create(
method Compare (line 73) | virtual int Compare(const Slice& a, const Slice& b) const {
method FindShortestSeparator (line 82) | virtual void FindShortestSeparator(std::string*, const Slice&) const { }
method FindShortSuccessor (line 83) | virtual void FindShortSuccessor(std::string* key) const { }
function leveldb_comparator_destroy (line 469) | void leveldb_comparator_destroy(leveldb_comparator_t* cmp) {
function leveldb_filterpolicy_t (line 473) | leveldb_filterpolicy_t* leveldb_filterpolicy_create(
method CreateFilter (line 108) | virtual void CreateFilter(const Slice* keys, int n, std::string* dst) ...
method KeyMayMatch (line 121) | virtual bool KeyMayMatch(const Slice& key, const Slice& filter) const {
function leveldb_filterpolicy_destroy (line 495) | void leveldb_filterpolicy_destroy(leveldb_filterpolicy_t* filter) {
function leveldb_filterpolicy_t (line 499) | leveldb_filterpolicy_t* leveldb_filterpolicy_create_bloom(int bits_per_k...
method CreateFilter (line 108) | virtual void CreateFilter(const Slice* keys, int n, std::string* dst) ...
method KeyMayMatch (line 121) | virtual bool KeyMayMatch(const Slice& key, const Slice& filter) const {
function leveldb_readoptions_t (line 522) | leveldb_readoptions_t* leveldb_readoptions_create() {
function leveldb_readoptions_destroy (line 526) | void leveldb_readoptions_destroy(leveldb_readoptions_t* opt) {
function leveldb_readoptions_set_verify_checksums (line 530) | void leveldb_readoptions_set_verify_checksums(
function leveldb_readoptions_set_fill_cache (line 536) | void leveldb_readoptions_set_fill_cache(
function leveldb_readoptions_set_snapshot (line 541) | void leveldb_readoptions_set_snapshot(
function leveldb_writeoptions_t (line 547) | leveldb_writeoptions_t* leveldb_writeoptions_create() {
function leveldb_writeoptions_destroy (line 551) | void leveldb_writeoptions_destroy(leveldb_writeoptions_t* opt) {
function leveldb_writeoptions_set_sync (line 555) | void leveldb_writeoptions_set_sync(
function leveldb_cache_t (line 560) | leveldb_cache_t* leveldb_cache_create_lru(size_t capacity) {
function leveldb_cache_destroy (line 566) | void leveldb_cache_destroy(leveldb_cache_t* cache) {
function leveldb_env_t (line 571) | leveldb_env_t* leveldb_create_default_env() {
function leveldb_env_destroy (line 578) | void leveldb_env_destroy(leveldb_env_t* env) {
function leveldb_free (line 583) | void leveldb_free(void* ptr) {
function leveldb_major_version (line 587) | int leveldb_major_version() {
function leveldb_minor_version (line 591) | int leveldb_minor_version() {
FILE: src/leveldb/db/c_test.c
function StartPhase (line 17) | static void StartPhase(const char* name) {
function CheckEqual (line 41) | static void CheckEqual(const char* expected, const char* v, size_t n) {
function Free (line 57) | static void Free(char** ptr) {
function CheckGet (line 64) | static void CheckGet(
function CheckIter (line 78) | static void CheckIter(leveldb_iterator_t* iter,
function CheckPut (line 89) | static void CheckPut(void* ptr,
function CheckDel (line 108) | static void CheckDel(void* ptr, const char* k, size_t klen) {
function CmpDestroy (line 115) | static void CmpDestroy(void* arg) { }
function CmpCompare (line 117) | static int CmpCompare(void* arg, const char* a, size_t alen,
function FilterDestroy (line 134) | static void FilterDestroy(void* arg) { }
function FilterKeyMatch (line 148) | unsigned char FilterKeyMatch(
function main (line 157) | int main(int argc, char** argv) {
FILE: src/leveldb/db/corruption_test.cc
type leveldb (line 23) | namespace leveldb {
class CorruptionTest (line 27) | class CorruptionTest {
method CorruptionTest (line 35) | CorruptionTest() {
method Status (line 54) | Status TryReopen() {
method Reopen (line 60) | void Reopen() {
method RepairDB (line 64) | void RepairDB() {
method Build (line 70) | void Build(int n) {
method Check (line 88) | void Check(int min_expected, int max_expected) {
method Corrupt (line 126) | void Corrupt(FileType filetype, int offset, int bytes_to_corrupt) {
method Property (line 176) | int Property(const std::string& name) {
method Slice (line 188) | Slice Key(int i, std::string* storage) {
method Slice (line 196) | Slice Value(int k, std::string* storage) {
function TEST (line 202) | TEST(CorruptionTest, Recovery) {
function TEST (line 213) | TEST(CorruptionTest, RecoverWriteError) {
function TEST (line 219) | TEST(CorruptionTest, NewFileErrorDuringWrite) {
function TEST (line 236) | TEST(CorruptionTest, TableFile) {
function TEST (line 247) | TEST(CorruptionTest, TableFileRepair) {
function TEST (line 263) | TEST(CorruptionTest, TableFileIndexData) {
function TEST (line 273) | TEST(CorruptionTest, MissingDescriptor) {
function TEST (line 280) | TEST(CorruptionTest, SequenceNumberRecovery) {
function TEST (line 301) | TEST(CorruptionTest, CorruptedDescriptor) {
function TEST (line 318) | TEST(CorruptionTest, CompactionInputError) {
function TEST (line 333) | TEST(CorruptionTest, CompactionInputErrorParanoid) {
function TEST (line 354) | TEST(CorruptionTest, UnrelatedKeys) {
function main (line 372) | int main(int argc, char** argv) {
FILE: src/leveldb/db/db_bench.cc
type leveldb (line 117) | namespace leveldb {
class RandomGenerator (line 123) | class RandomGenerator {
method RandomGenerator (line 129) | RandomGenerator() {
method Slice (line 144) | Slice Generate(size_t len) {
function Slice (line 155) | static Slice TrimSpace(Slice s) {
function AppendWithSpace (line 168) | static void AppendWithSpace(std::string* str, Slice msg) {
class Stats (line 176) | class Stats {
method Stats (line 189) | Stats() { Start(); }
method Start (line 191) | void Start() {
method Merge (line 203) | void Merge(const Stats& other) {
method Stop (line 215) | void Stop() {
method AddMessage (line 220) | void AddMessage(Slice msg) {
method FinishedSingleOp (line 224) | void FinishedSingleOp() {
method AddBytes (line 250) | void AddBytes(int64_t n) {
method Report (line 254) | void Report(const Slice& name) {
type SharedState (line 284) | struct SharedState {
method SharedState (line 299) | SharedState() : cv(&mu) { }
type ThreadState (line 303) | struct ThreadState {
method ThreadState (line 309) | ThreadState(int index)
class Benchmark (line 317) | class Benchmark {
method PrintHeader (line 329) | void PrintHeader() {
method PrintWarnings (line 347) | void PrintWarnings() {
method PrintEnvironment (line 368) | void PrintEnvironment() {
method Benchmark (line 404) | Benchmark()
method Run (line 433) | void Run() {
type ThreadArg (line 551) | struct ThreadArg {
method ThreadBody (line 558) | static void ThreadBody(void* v) {
method RunBenchmark (line 586) | void RunBenchmark(int n, Slice name,
method Crc32c (line 627) | void Crc32c(ThreadState* thread) {
method AcquireLoad (line 646) | void AcquireLoad(ThreadState* thread) {
method SnappyCompress (line 662) | void SnappyCompress(ThreadState* thread) {
method SnappyUncompress (line 687) | void SnappyUncompress(ThreadState* thread) {
method Open (line 709) | void Open() {
method OpenBench (line 728) | void OpenBench(ThreadState* thread) {
method WriteSeq (line 736) | void WriteSeq(ThreadState* thread) {
method WriteRandom (line 740) | void WriteRandom(ThreadState* thread) {
method DoWrite (line 744) | void DoWrite(ThreadState* thread, bool seq) {
method ReadSequential (line 774) | void ReadSequential(ThreadState* thread) {
method ReadReverse (line 787) | void ReadReverse(ThreadState* thread) {
method ReadRandom (line 800) | void ReadRandom(ThreadState* thread) {
method ReadMissing (line 818) | void ReadMissing(ThreadState* thread) {
method ReadHot (line 830) | void ReadHot(ThreadState* thread) {
method SeekRandom (line 843) | void SeekRandom(ThreadState* thread) {
method DoDelete (line 861) | void DoDelete(ThreadState* thread, bool seq) {
method DeleteSeq (line 882) | void DeleteSeq(ThreadState* thread) {
method DeleteRandom (line 886) | void DeleteRandom(ThreadState* thread) {
method ReadWhileWriting (line 890) | void ReadWhileWriting(ThreadState* thread) {
method Compact (line 920) | void Compact(ThreadState* thread) {
method PrintStats (line 924) | void PrintStats(const char* key) {
method WriteToFile (line 932) | static void WriteToFile(void* arg, const char* buf, int n) {
method HeapProfile (line 936) | void HeapProfile() {
function main (line 956) | int main(int argc, char** argv) {
FILE: src/leveldb/db/db_impl.cc
type leveldb (line 36) | namespace leveldb {
type DBImpl::Writer (line 41) | struct DBImpl::Writer {
method Writer (line 48) | explicit Writer(port::Mutex* mu) : cv(mu) { }
type DBImpl::CompactionState (line 51) | struct DBImpl::CompactionState {
type Output (line 61) | struct Output {
method Output (line 74) | Output* current_output() { return &outputs[outputs.size()-1]; }
method CompactionState (line 76) | explicit CompactionState(Compaction* c)
function ClipToRange (line 86) | static void ClipToRange(T* ptr, V minvalue, V maxvalue) {
function Options (line 90) | Options SanitizeOptions(const std::string& dbname,
function Status (line 177) | Status DBImpl::NewDB() {
function Status (line 274) | Status DBImpl::Recover(VersionEdit* edit, bool *save_manifest) {
function Status (line 365) | Status DBImpl::RecoverLogFile(uint64_t log_number, bool last_log,
function Status (line 488) | Status DBImpl::WriteLevel0Table(MemTable* mem, VersionEdit* edit,
function Status (line 621) | Status DBImpl::TEST_CompactMemTable() {
function Status (line 788) | Status DBImpl::OpenCompactionOutputFile(CompactionState* compact) {
function Status (line 813) | Status DBImpl::FinishCompactionOutputFile(CompactionState* compact,
function Status (line 866) | Status DBImpl::InstallCompactionResults(CompactionState* compact) {
function Status (line 887) | Status DBImpl::DoCompactionWork(CompactionState* compact) {
type IterState (line 1049) | struct IterState {
function CleanupIteratorState (line 1056) | static void CleanupIteratorState(void* arg1, void* arg2) {
function Iterator (line 1067) | Iterator* DBImpl::NewInternalIterator(const ReadOptions& options,
function Iterator (line 1098) | Iterator* DBImpl::TEST_NewInternalIterator() {
function Status (line 1109) | Status DBImpl::Get(const ReadOptions& options,
function Iterator (line 1156) | Iterator* DBImpl::NewIterator(const ReadOptions& options) {
function Snapshot (line 1175) | const Snapshot* DBImpl::GetSnapshot() {
function Status (line 1186) | Status DBImpl::Put(const WriteOptions& o, const Slice& key, const Slic...
function Status (line 1190) | Status DBImpl::Delete(const WriteOptions& options, const Slice& key) {
function Status (line 1194) | Status DBImpl::Write(const WriteOptions& options, WriteBatch* my_batch) {
function WriteBatch (line 1269) | WriteBatch* DBImpl::BuildBatchGroup(Writer** last_writer) {
function Status (line 1318) | Status DBImpl::MakeRoomForWrite(bool force) {
function Status (line 1476) | Status DB::Put(const WriteOptions& opt, const Slice& key, const Slice&...
function Status (line 1482) | Status DB::Delete(const WriteOptions& opt, const Slice& key) {
function Status (line 1490) | Status DB::Open(const Options& options, const std::string& dbname,
function Status (line 1537) | Status DestroyDB(const std::string& dbname, const Options& options) {
FILE: src/leveldb/db/db_impl.h
type CompactionState (line 69) | struct CompactionState
type Writer (line 70) | struct Writer
type ManualCompaction (line 162) | struct ManualCompaction {
type CompactionStats (line 178) | struct CompactionStats {
FILE: src/leveldb/db/db_iter.cc
type leveldb (line 17) | namespace leveldb {
function DumpInternalIter (line 20) | static void DumpInternalIter(Iterator* iter) {
class DBIter (line 39) | class DBIter: public Iterator {
type Direction (line 46) | enum Direction {
method DBIter (line 51) | DBIter(DBImpl* db, const Comparator* cmp, Iterator* iter, SequenceNu...
method Valid (line 65) | virtual bool Valid() const { return valid_; }
method Slice (line 66) | virtual Slice key() const {
method Slice (line 70) | virtual Slice value() const {
method Status (line 74) | virtual Status status() const {
method SaveKey (line 93) | inline void SaveKey(const Slice& k, std::string* dst) {
method ClearSavedValue (line 97) | inline void ClearSavedValue() {
method RandomPeriod (line 107) | ssize_t RandomPeriod() {
function Iterator (line 308) | Iterator* NewDBIterator(
FILE: src/leveldb/db/db_iter.h
function namespace (line 12) | namespace leveldb {
FILE: src/leveldb/db/db_test.cc
type leveldb (line 20) | namespace leveldb {
function RandomString (line 22) | static std::string RandomString(Random* rnd, int len) {
class AtomicCounter (line 29) | class AtomicCounter {
method AtomicCounter (line 34) | AtomicCounter() : count_(0) { }
method Increment (line 35) | void Increment() {
method IncrementBy (line 38) | void IncrementBy(int count) {
method Read (line 42) | int Read() {
method Reset (line 46) | void Reset() {
function DelayMilliseconds (line 52) | void DelayMilliseconds(int millis) {
class SpecialEnv (line 58) | class SpecialEnv : public EnvWrapper {
method SpecialEnv (line 81) | explicit SpecialEnv(Env* base) : EnvWrapper(base) {
method Status (line 91) | Status NewWritableFile(const std::string& f, WritableFile** r) {
method Status (line 164) | Status NewRandomAccessFile(const std::string& f, RandomAccessFile** ...
class DBTest (line 189) | class DBTest {
type OptionConfig (line 194) | enum OptionConfig {
method DBTest (line 210) | DBTest() : option_config_(kDefault),
method ChangeOptions (line 228) | bool ChangeOptions() {
method Options (line 239) | Options CurrentOptions() {
method DBImpl (line 258) | DBImpl* dbfull() {
method Reopen (line 262) | void Reopen(Options* options = NULL) {
method Close (line 266) | void Close() {
method DestroyAndReopen (line 271) | void DestroyAndReopen(Options* options = NULL) {
method Status (line 278) | Status TryReopen(Options* options) {
method Status (line 293) | Status Put(const std::string& k, const std::string& v) {
method Status (line 297) | Status Delete(const std::string& k) {
method Get (line 301) | std::string Get(const std::string& k, const Snapshot* snapshot = NUL...
method Contents (line 316) | std::string Contents() {
method AllEntriesFor (line 341) | std::string AllEntriesFor(const Slice& user_key) {
method NumTableFilesAtLevel (line 383) | int NumTableFilesAtLevel(int level) {
method TotalTableFiles (line 391) | int TotalTableFiles() {
method FilesPerLevel (line 400) | std::string FilesPerLevel() {
method CountFiles (line 416) | int CountFiles() {
method Size (line 422) | uint64_t Size(const Slice& start, const Slice& limit) {
method Compact (line 429) | void Compact(const Slice& start, const Slice& limit) {
method MakeTables (line 435) | void MakeTables(int n, const std::string& small, const std::string& ...
method FillLevels (line 445) | void FillLevels(const std::string& smallest, const std::string& larg...
method DumpFileCounts (line 449) | void DumpFileCounts(const char* label) {
method DumpSSTableList (line 462) | std::string DumpSSTableList() {
method IterStatus (line 468) | std::string IterStatus(Iterator* iter) {
method DeleteAnSSTFile (line 478) | bool DeleteAnSSTFile() {
method RenameLDBToSST (line 493) | int RenameLDBToSST() {
function TEST (line 511) | TEST(DBTest, Empty) {
function TEST (line 518) | TEST(DBTest, ReadWrite) {
function TEST (line 529) | TEST(DBTest, PutDeleteGet) {
function TEST (line 540) | TEST(DBTest, GetFromImmutableLayer) {
function TEST (line 558) | TEST(DBTest, GetFromVersions) {
function TEST (line 566) | TEST(DBTest, GetMemUsage) {
function TEST (line 577) | TEST(DBTest, GetSnapshot) {
function TEST (line 595) | TEST(DBTest, GetLevel0Ordering) {
function TEST (line 610) | TEST(DBTest, GetOrderedByLevels) {
function TEST (line 622) | TEST(DBTest, GetPicksCorrectFile) {
function TEST (line 637) | TEST(DBTest, GetEncountersEmptyLevel) {
function TEST (line 676) | TEST(DBTest, IterEmpty) {
function TEST (line 691) | TEST(DBTest, IterSingle) {
function TEST (line 729) | TEST(DBTest, IterMulti) {
function TEST (line 812) | TEST(DBTest, IterSmallAndLargeMix) {
function TEST (line 850) | TEST(DBTest, IterMultiWithDelete) {
function TEST (line 867) | TEST(DBTest, Recover) {
function TEST (line 889) | TEST(DBTest, RecoveryWithEmptyLog) {
function TEST (line 903) | TEST(DBTest, RecoverDuringMemtableCompaction) {
function Key (line 924) | static std::string Key(int i) {
function TEST (line 930) | TEST(DBTest, MinorCompactionsHappen) {
function TEST (line 955) | TEST(DBTest, RecoverWithLargeLog) {
function TEST (line 979) | TEST(DBTest, CompactionsGenerateMultipleFiles) {
function TEST (line 1005) | TEST(DBTest, RepeatedWritesToSameKey) {
function TEST (line 1024) | TEST(DBTest, SparseMerge) {
function Between (line 1064) | static bool Between(uint64_t val, uint64_t low, uint64_t high) {
function TEST (line 1075) | TEST(DBTest, ApproximateSizes) {
function TEST (line 1133) | TEST(DBTest, ApproximateSizes_MixOfSmallAndLarge) {
function TEST (line 1176) | TEST(DBTest, IteratorPinsRef) {
function TEST (line 1198) | TEST(DBTest, Snapshot) {
function TEST (line 1227) | TEST(DBTest, HiddenValuesAreRemoved) {
function TEST (line 1258) | TEST(DBTest, DeletionMarkers1) {
function TEST (line 1287) | TEST(DBTest, DeletionMarkers2) {
function TEST (line 1313) | TEST(DBTest, OverlapInLevel0) {
function TEST (line 1354) | TEST(DBTest, L0_CompactionBug_Issue44_a) {
function TEST (line 1371) | TEST(DBTest, L0_CompactionBug_Issue44_b) {
function TEST (line 1397) | TEST(DBTest, ComparatorCheck) {
function TEST (line 1420) | TEST(DBTest, CustomComparator) {
function TEST (line 1475) | TEST(DBTest, ManualCompaction) {
function TEST (line 1509) | TEST(DBTest, DBOpen_Options) {
function TEST (line 1548) | TEST(DBTest, Locking) {
function TEST (line 1555) | TEST(DBTest, NoSpace) {
function TEST (line 1574) | TEST(DBTest, NonWritableFileSystem) {
function TEST (line 1594) | TEST(DBTest, WriteSyncError) {
function TEST (line 1625) | TEST(DBTest, ManifestWriteError) {
function TEST (line 1666) | TEST(DBTest, MissingSSTFile) {
function TEST (line 1684) | TEST(DBTest, StillReadSST) {
function TEST (line 1700) | TEST(DBTest, FilesDeletedAfterCompaction) {
function TEST (line 1711) | TEST(DBTest, BloomFilter) {
type MTState (line 1765) | struct MTState {
type MTThread (line 1772) | struct MTThread {
function MTThreadBody (line 1777) | static void MTThreadBody(void* arg) {
function TEST (line 1824) | TEST(DBTest, MultiThreaded) {
class ModelDB (line 1860) | class ModelDB: public DB {
class ModelSnapshot (line 1862) | class ModelSnapshot : public Snapshot {
method ModelDB (line 1867) | explicit ModelDB(const Options& options): options_(options) { }
method Status (line 1869) | virtual Status Put(const WriteOptions& o, const Slice& k, const Slic...
method Status (line 1872) | virtual Status Delete(const WriteOptions& o, const Slice& key) {
method Status (line 1875) | virtual Status Get(const ReadOptions& options,
method Iterator (line 1880) | virtual Iterator* NewIterator(const ReadOptions& options) {
method Snapshot (line 1891) | virtual const Snapshot* GetSnapshot() {
method ReleaseSnapshot (line 1897) | virtual void ReleaseSnapshot(const Snapshot* snapshot) {
method Status (line 1900) | virtual Status Write(const WriteOptions& options, WriteBatch* batch) {
method GetProperty (line 1916) | virtual bool GetProperty(const Slice& property, std::string* value) {
method GetApproximateSizes (line 1919) | virtual void GetApproximateSizes(const Range* r, int n, uint64_t* si...
method CompactRange (line 1924) | virtual void CompactRange(const Slice* start, const Slice* end) {
class ModelIter (line 1928) | class ModelIter: public Iterator {
method ModelIter (line 1930) | ModelIter(const KVMap* map, bool owned)
method Valid (line 1936) | virtual bool Valid() const { return iter_ != map_->end(); }
method SeekToFirst (line 1937) | virtual void SeekToFirst() { iter_ = map_->begin(); }
method SeekToLast (line 1938) | virtual void SeekToLast() {
method Seek (line 1945) | virtual void Seek(const Slice& k) {
method Next (line 1948) | virtual void Next() { ++iter_; }
method Prev (line 1949) | virtual void Prev() { --iter_; }
method Slice (line 1950) | virtual Slice key() const { return iter_->first; }
method Slice (line 1951) | virtual Slice value() const { return iter_->second; }
method Status (line 1952) | virtual Status status() const { return Status::OK(); }
function RandomKey (line 1962) | static std::string RandomKey(Random* rnd) {
function CompareIterators (line 1969) | static bool CompareIterators(int step,
function TEST (line 2017) | TEST(DBTest, Randomized) {
function MakeKey (line 2088) | std::string MakeKey(unsigned int num) {
function BM_LogAndApply (line 2094) | void BM_LogAndApply(int iters, int num_base_files) {
function main (line 2148) | int main(int argc, char** argv) {
FILE: src/leveldb/db/dbformat.cc
type leveldb (line 10) | namespace leveldb {
function PackSequenceAndType (line 12) | static uint64_t PackSequenceAndType(uint64_t seq, ValueType t) {
function AppendInternalKey (line 18) | void AppendInternalKey(std::string* result, const ParsedInternalKey& k...
FILE: src/leveldb/db/dbformat.h
function namespace (line 17) | namespace leveldb {
FILE: src/leveldb/db/dbformat_test.cc
type leveldb (line 9) | namespace leveldb {
function IKey (line 11) | static std::string IKey(const std::string& user_key,
function Shorten (line 19) | static std::string Shorten(const std::string& s, const std::string& l) {
function ShortSuccessor (line 25) | static std::string ShortSuccessor(const std::string& s) {
function TestKey (line 31) | static void TestKey(const std::string& key,
class FormatTest (line 47) | class FormatTest { }
function TEST (line 49) | TEST(FormatTest, InternalKey_EncodeDecode) {
function TEST (line 65) | TEST(FormatTest, InternalKeyShortSeparator) {
function TEST (line 101) | TEST(FormatTest, InternalKeyShortestSuccessor) {
function main (line 110) | int main(int argc, char** argv) {
FILE: src/leveldb/db/dumpfile.cc
type leveldb (line 19) | namespace leveldb {
function GuessType (line 23) | bool GuessType(const std::string& fname, FileType* type) {
class CorruptionReporter (line 36) | class CorruptionReporter : public log::Reader::Reporter {
method Corruption (line 39) | virtual void Corruption(size_t bytes, const Status& status) {
function Status (line 50) | Status PrintLogContents(Env* env, const std::string& fname,
class WriteBatchItemPrinter (line 71) | class WriteBatchItemPrinter : public WriteBatch::Handler {
method Put (line 74) | virtual void Put(const Slice& key, const Slice& value) {
method Delete (line 82) | virtual void Delete(const Slice& key) {
function WriteBatchPrinter (line 93) | static void WriteBatchPrinter(uint64_t pos, Slice record, WritableFile...
function Status (line 118) | Status DumpLog(Env* env, const std::string& fname, WritableFile* dst) {
function VersionEditPrinter (line 124) | static void VersionEditPrinter(uint64_t pos, Slice record, WritableFil...
function Status (line 139) | Status DumpDescriptor(Env* env, const std::string& fname, WritableFile...
function Status (line 143) | Status DumpTable(Env* env, const std::string& fname, WritableFile* dst) {
function Status (line 210) | Status DumpFile(Env* env, const std::string& fname, WritableFile* dst) {
FILE: src/leveldb/db/fault_injection_test.cc
type leveldb (line 26) | namespace leveldb {
class FaultInjectionTestEnv (line 32) | class FaultInjectionTestEnv
method FaultInjectionTestEnv (line 129) | FaultInjectionTestEnv() : EnvWrapper(Env::Default()), filesystem_act...
method IsFilesystemActive (line 149) | bool IsFilesystemActive() const { return filesystem_active_; }
method SetFilesystemActive (line 150) | void SetFilesystemActive(bool active) { filesystem_active_ = active; }
function GetDirName (line 37) | static std::string GetDirName(const std::string filename) {
function Status (line 46) | Status SyncDir(const std::string& dir) {
function Status (line 52) | Status Truncate(const std::string& filename, uint64_t length) {
type FileState (line 84) | struct FileState {
method FileState (line 90) | FileState(const std::string& filename)
method FileState (line 96) | FileState() : pos_(-1), pos_at_last_sync_(-1), pos_at_last_flush_(-1...
method IsFullySynced (line 98) | bool IsFullySynced() const { return pos_ <= 0 || pos_ == pos_at_last...
class TestWritableFile (line 107) | class TestWritableFile : public WritableFile {
class FaultInjectionTestEnv (line 127) | class FaultInjectionTestEnv : public EnvWrapper {
method FaultInjectionTestEnv (line 129) | FaultInjectionTestEnv() : EnvWrapper(Env::Default()), filesystem_act...
method IsFilesystemActive (line 149) | bool IsFilesystemActive() const { return filesystem_active_; }
method SetFilesystemActive (line 150) | void SetFilesystemActive(bool active) { filesystem_active_ = active; }
function Status (line 176) | Status TestWritableFile::Append(const Slice& data) {
function Status (line 184) | Status TestWritableFile::Close() {
function Status (line 193) | Status TestWritableFile::Flush() {
function Status (line 201) | Status TestWritableFile::SyncParent() {
function Status (line 209) | Status TestWritableFile::Sync() {
function Status (line 227) | Status FaultInjectionTestEnv::NewWritableFile(const std::string& fname,
function Status (line 245) | Status FaultInjectionTestEnv::NewAppendableFile(const std::string& fname,
function Status (line 265) | Status FaultInjectionTestEnv::DropUnsyncedFileData() {
function Status (line 297) | Status FaultInjectionTestEnv::DeleteFile(const std::string& f) {
function Status (line 306) | Status FaultInjectionTestEnv::RenameFile(const std::string& s,
function Status (line 335) | Status FaultInjectionTestEnv::DeleteFilesCreatedAfterLastDirSync() {
function Status (line 354) | Status FileState::DropUnsyncedData() const {
class FaultInjectionTest (line 359) | class FaultInjectionTest {
type ExpectedVerifResult (line 361) | enum ExpectedVerifResult { VAL_EXPECT_NO_ERROR, VAL_EXPECT_ERROR }
type ResetMethod (line 362) | enum ResetMethod { RESET_DROP_UNSYNCED_DATA, RESET_DELETE_UNSYNCED_F...
method FaultInjectionTest (line 370) | FaultInjectionTest()
method ReuseLogs (line 390) | void ReuseLogs(bool reuse) {
method Build (line 394) | void Build(int start_idx, int num_vals) {
method Status (line 406) | Status ReadValue(int i, std::string* val) const {
method Status (line 414) | Status Verify(int start_idx, int num_vals,
method Slice (line 437) | Slice Key(int i, std::string* storage) const {
method Slice (line 445) | Slice Value(int k, std::string* storage) const {
method Status (line 450) | Status OpenDB() {
method CloseDB (line 457) | void CloseDB() {
method DeleteAllData (line 462) | void DeleteAllData() {
method ResetDBState (line 472) | void ResetDBState(ResetMethod reset_method) {
method PartialCompactTestPreFault (line 485) | void PartialCompactTestPreFault(int num_pre_sync, int num_post_sync) {
method PartialCompactTestReopenWithFault (line 492) | void PartialCompactTestReopenWithFault(ResetMethod reset_method,
method NoWriteTestPreFault (line 503) | void NoWriteTestPreFault() {
method NoWriteTestReopenWithFault (line 506) | void NoWriteTestReopenWithFault(ResetMethod reset_method) {
method DoTest (line 512) | void DoTest() {
function TEST (line 540) | TEST(FaultInjectionTest, FaultTestNoLogReuse) {
function TEST (line 545) | TEST(FaultInjectionTest, FaultTestWithLogReuse) {
function main (line 552) | int main(int argc, char** argv) {
FILE: src/leveldb/db/filename.cc
type leveldb (line 12) | namespace leveldb {
function MakeFileName (line 18) | static std::string MakeFileName(const std::string& name, uint64_t number,
function LogFileName (line 27) | std::string LogFileName(const std::string& name, uint64_t number) {
function TableFileName (line 32) | std::string TableFileName(const std::string& name, uint64_t number) {
function SSTTableFileName (line 37) | std::string SSTTableFileName(const std::string& name, uint64_t number) {
function DescriptorFileName (line 42) | std::string DescriptorFileName(const std::string& dbname, uint64_t num...
function CurrentFileName (line 50) | std::string CurrentFileName(const std::string& dbname) {
function LockFileName (line 54) | std::string LockFileName(const std::string& dbname) {
function TempFileName (line 58) | std::string TempFileName(const std::string& dbname, uint64_t number) {
function InfoLogFileName (line 63) | std::string InfoLogFileName(const std::string& dbname) {
function OldInfoLogFileName (line 68) | std::string OldInfoLogFileName(const std::string& dbname) {
function ParseFileName (line 80) | bool ParseFileName(const std::string& fname,
function Status (line 126) | Status SetCurrentFile(Env* env, const std::string& dbname,
FILE: src/leveldb/db/filename.h
function namespace (line 16) | namespace leveldb {
FILE: src/leveldb/db/filename_test.cc
type leveldb (line 12) | namespace leveldb {
class FileNameTest (line 14) | class FileNameTest { }
function TEST (line 16) | TEST(FileNameTest, Parse) {
function TEST (line 77) | TEST(FileNameTest, Construction) {
function main (line 121) | int main(int argc, char** argv) {
FILE: src/leveldb/db/leveldbutil.cc
type leveldb (line 10) | namespace leveldb {
class StdoutPrinter (line 13) | class StdoutPrinter : public WritableFile {
method Status (line 15) | virtual Status Append(const Slice& data) {
method Status (line 19) | virtual Status Close() { return Status::OK(); }
method Status (line 20) | virtual Status Flush() { return Status::OK(); }
method Status (line 21) | virtual Status Sync() { return Status::OK(); }
method GetName (line 22) | virtual std::string GetName() const { return "[stdout]"; }
function HandleDumpCommand (line 25) | bool HandleDumpCommand(Env* env, char** files, int num) {
function Usage (line 41) | static void Usage() {
function main (line 49) | int main(int argc, char** argv) {
FILE: src/leveldb/db/log_format.h
function namespace (line 11) | namespace leveldb {
FILE: src/leveldb/db/log_reader.cc
type leveldb (line 12) | namespace leveldb {
type log (line 13) | namespace log {
FILE: src/leveldb/db/log_reader.h
function namespace (line 14) | namespace leveldb {
FILE: src/leveldb/db/log_test.cc
type leveldb (line 13) | namespace leveldb {
type log (line 14) | namespace log {
function BigString (line 18) | static std::string BigString(const std::string& partial_string, size...
function NumberString (line 28) | static std::string NumberString(int n) {
function RandomSkewedString (line 35) | static std::string RandomSkewedString(int i, Random* rnd) {
class LogTest (line 39) | class LogTest {
class StringDest (line 41) | class StringDest : public WritableFile {
method Status (line 45) | virtual Status Close() { return Status::OK(); }
method Status (line 46) | virtual Status Flush() { return Status::OK(); }
method Status (line 47) | virtual Status Sync() { return Status::OK(); }
method Status (line 48) | virtual Status Append(const Slice& slice) {
class StringSource (line 54) | class StringSource : public SequentialFile {
method StringSource (line 59) | StringSource() : force_error_(false), returned_partial_(false) { }
method Status (line 61) | virtual Status Read(size_t n, Slice* result, char* scratch) {
method Status (line 79) | virtual Status Skip(uint64_t n) {
class ReportCollector (line 91) | class ReportCollector : public Reader::Reporter {
method ReportCollector (line 96) | ReportCollector() : dropped_bytes_(0) { }
method Corruption (line 97) | virtual void Corruption(size_t bytes, const Status& status) {
method LogTest (line 116) | LogTest() : reading_(false),
method ReopenForAppend (line 127) | void ReopenForAppend() {
method Write (line 132) | void Write(const std::string& msg) {
method WrittenBytes (line 137) | size_t WrittenBytes() const {
method Read (line 141) | std::string Read() {
method IncrementByte (line 155) | void IncrementByte(int offset, int delta) {
method SetByte (line 159) | void SetByte(int offset, char new_byte) {
method ShrinkSize (line 163) | void ShrinkSize(int bytes) {
method FixChecksum (line 167) | void FixChecksum(int header_offset, int len) {
method ForceError (line 174) | void ForceError() {
method DroppedBytes (line 178) | size_t DroppedBytes() const {
method ReportMessage (line 182) | std::string ReportMessage() const {
method MatchError (line 187) | std::string MatchError(const std::string& msg) const {
method WriteInitialOffsetLog (line 195) | void WriteInitialOffsetLog() {
method StartReadingAt (line 203) | void StartReadingAt(uint64_t initial_offset) {
method CheckOffsetPastEndReturnsNoRecords (line 208) | void CheckOffsetPastEndReturnsNoRecords(uint64_t offset_past_end) {
method CheckInitialOffsetRecord (line 220) | void CheckInitialOffsetRecord(uint64_t initial_offset,
function TEST (line 270) | TEST(LogTest, Empty) {
function TEST (line 274) | TEST(LogTest, ReadWrite) {
function TEST (line 287) | TEST(LogTest, ManyBlocks) {
function TEST (line 297) | TEST(LogTest, Fragmentation) {
function TEST (line 307) | TEST(LogTest, MarginalTrailer) {
function TEST (line 320) | TEST(LogTest, MarginalTrailer2) {
function TEST (line 333) | TEST(LogTest, ShortTrailer) {
function TEST (line 345) | TEST(LogTest, AlignedEof) {
function TEST (line 353) | TEST(LogTest, OpenForAppend) {
function TEST (line 362) | TEST(LogTest, RandomRead) {
function TEST (line 377) | TEST(LogTest, ReadError) {
function TEST (line 385) | TEST(LogTest, BadRecordType) {
function TEST (line 395) | TEST(LogTest, TruncatedTrailingRecordIsIgnored) {
function TEST (line 404) | TEST(LogTest, BadLength) {
function TEST (line 415) | TEST(LogTest, BadLengthAtEndIsIgnored) {
function TEST (line 423) | TEST(LogTest, ChecksumMismatch) {
function TEST (line 431) | TEST(LogTest, UnexpectedMiddleType) {
function TEST (line 440) | TEST(LogTest, UnexpectedLastType) {
function TEST (line 449) | TEST(LogTest, UnexpectedFullType) {
function TEST (line 460) | TEST(LogTest, UnexpectedFirstType) {
function TEST (line 471) | TEST(LogTest, MissingLastIsIgnored) {
function TEST (line 480) | TEST(LogTest, PartialLastIsIgnored) {
function TEST (line 489) | TEST(LogTest, SkipIntoMultiRecord) {
function TEST (line 505) | TEST(LogTest, ErrorJoinsRecords) {
function TEST (line 528) | TEST(LogTest, ReadStart) {
function TEST (line 532) | TEST(LogTest, ReadSecondOneOff) {
function TEST (line 536) | TEST(LogTest, ReadSecondTenThousand) {
function TEST (line 540) | TEST(LogTest, ReadSecondStart) {
function TEST (line 544) | TEST(LogTest, ReadThirdOneOff) {
function TEST (line 548) | TEST(LogTest, ReadThirdStart) {
function TEST (line 552) | TEST(LogTest, ReadFourthOneOff) {
function TEST (line 556) | TEST(LogTest, ReadFourthFirstBlockTrailer) {
function TEST (line 560) | TEST(LogTest, ReadFourthMiddleBlock) {
function TEST (line 564) | TEST(LogTest, ReadFourthLastBlock) {
function TEST (line 568) | TEST(LogTest, ReadFourthStart) {
function TEST (line 574) | TEST(LogTest, ReadInitialOffsetIntoBlockPadding) {
function TEST (line 578) | TEST(LogTest, ReadEnd) {
function TEST (line 582) | TEST(LogTest, ReadPastEnd) {
function main (line 589) | int main(int argc, char** argv) {
FILE: src/leveldb/db/log_writer.cc
type leveldb (line 12) | namespace leveldb {
type log (line 13) | namespace log {
function InitTypeCrc (line 15) | static void InitTypeCrc(uint32_t* type_crc) {
function Status (line 36) | Status Writer::AddRecord(const Slice& slice) {
function Status (line 84) | Status Writer::EmitPhysicalRecord(RecordType t, const char* ptr, siz...
FILE: src/leveldb/db/log_writer.h
function namespace (line 13) | namespace leveldb {
FILE: src/leveldb/db/memtable.cc
type leveldb (line 12) | namespace leveldb {
function Slice (line 14) | static Slice GetLengthPrefixedSlice(const char* data) {
class MemTableIterator (line 51) | class MemTableIterator: public Iterator {
method MemTableIterator (line 53) | explicit MemTableIterator(MemTable::Table* table) : iter_(table) { }
method Valid (line 55) | virtual bool Valid() const { return iter_.Valid(); }
method Seek (line 56) | virtual void Seek(const Slice& k) { iter_.Seek(EncodeKey(&tmp_, k)); }
method SeekToFirst (line 57) | virtual void SeekToFirst() { iter_.SeekToFirst(); }
method SeekToLast (line 58) | virtual void SeekToLast() { iter_.SeekToLast(); }
method Next (line 59) | virtual void Next() { iter_.Next(); }
method Prev (line 60) | virtual void Prev() { iter_.Prev(); }
method Slice (line 61) | virtual Slice key() const { return GetLengthPrefixedSlice(iter_.key(...
method Slice (line 62) | virtual Slice value() const {
method Status (line 67) | virtual Status status() const { return Status::OK(); }
function Iterator (line 78) | Iterator* MemTable::NewIterator() {
FILE: src/leveldb/db/memtable.h
function namespace (line 14) | namespace leveldb {
FILE: src/leveldb/db/recovery_test.cc
type leveldb (line 16) | namespace leveldb {
class RecoveryTest (line 18) | class RecoveryTest {
method RecoveryTest (line 20) | RecoveryTest() : env_(Env::Default()), db_(NULL) {
method DBImpl (line 31) | DBImpl* dbfull() const { return reinterpret_cast<DBImpl*>(db_); }
method Env (line 32) | Env* env() const { return env_; }
method CanAppend (line 34) | bool CanAppend() {
method Close (line 45) | void Close() {
method Open (line 50) | void Open(Options* options = NULL) {
method Status (line 66) | Status Put(const std::string& k, const std::string& v) {
method Get (line 70) | std::string Get(const std::string& k, const Snapshot* snapshot = NUL...
method ManifestFileName (line 81) | std::string ManifestFileName() {
method LogName (line 91) | std::string LogName(uint64_t number) {
method DeleteLogFiles (line 95) | size_t DeleteLogFiles() {
method FirstLogFile (line 103) | uint64_t FirstLogFile() {
method GetFiles (line 107) | std::vector<uint64_t> GetFiles(FileType t) {
method NumLogs (line 121) | int NumLogs() {
method NumTables (line 125) | int NumTables() {
method FileSize (line 129) | uint64_t FileSize(const std::string& fname) {
method CompactMemTable (line 135) | void CompactMemTable() {
method MakeLogFile (line 140) | void MakeLogFile(uint64_t lognum, SequenceNumber seq, Slice key, Sli...
function TEST (line 159) | TEST(RecoveryTest, ManifestReused) {
function TEST (line 175) | TEST(RecoveryTest, LargeManifestCompacted) {
function TEST (line 206) | TEST(RecoveryTest, NoLogFiles) {
function TEST (line 215) | TEST(RecoveryTest, LogFileReuse) {
function TEST (line 245) | TEST(RecoveryTest, MultipleMemTables) {
function TEST (line 274) | TEST(RecoveryTest, MultipleLogFiles) {
function main (line 322) | int main(int argc, char** argv) {
FILE: src/leveldb/db/repair.cc
type leveldb (line 41) | namespace leveldb {
class Repairer (line 45) | class Repairer {
method Repairer (line 47) | Repairer(const std::string& dbname, const Options& options)
method Status (line 70) | Status Run() {
type TableInfo (line 95) | struct TableInfo {
method Status (line 116) | Status FindFiles() {
method ConvertLogFilesToTables (line 149) | void ConvertLogFilesToTables() {
method Status (line 162) | Status ConvertLogToTable(uint64_t log) {
method ExtractMetaData (line 244) | void ExtractMetaData() {
method Iterator (line 250) | Iterator* NewTableIterator(const FileMetaData& meta) {
method ScanTable (line 258) | void ScanTable(uint64_t number) {
method RepairTable (line 321) | void RepairTable(const std::string& src, TableInfo t) {
method Status (line 375) | Status WriteDescriptor() {
method ArchiveFile (line 434) | void ArchiveFile(const std::string& fname) {
function Status (line 456) | Status RepairDB(const std::string& dbname, const Options& options) {
FILE: src/leveldb/db/skiplist.h
function namespace (line 36) | namespace leveldb {
FILE: src/leveldb/db/skiplist_test.cc
type leveldb (line 13) | namespace leveldb {
type Comparator (line 17) | struct Comparator {
class SkipTest (line 29) | class SkipTest { }
function TEST (line 31) | TEST(SkipTest, Empty) {
function TEST (line 47) | TEST(SkipTest, InsertAndLookup) {
class ConcurrentTest (line 149) | class ConcurrentTest {
method key (line 153) | static uint64_t key(Key key) { return (key >> 40); }
method gen (line 154) | static uint64_t gen(Key key) { return (key >> 8) & 0xffffffffu; }
method hash (line 155) | static uint64_t hash(Key key) { return key & 0xff; }
method HashNumbers (line 157) | static uint64_t HashNumbers(uint64_t k, uint64_t g) {
method Key (line 162) | static Key MakeKey(uint64_t k, uint64_t g) {
method IsValidKey (line 169) | static bool IsValidKey(Key k) {
method Key (line 173) | static Key RandomTarget(Random* rnd) {
type State (line 188) | struct State {
method Set (line 190) | void Set(int k, intptr_t v) {
method Get (line 193) | intptr_t Get(int k) {
method State (line 197) | State() {
method ConcurrentTest (line 214) | ConcurrentTest() : list_(Comparator(), &arena_) { }
method WriteStep (line 217) | void WriteStep(Random* rnd) {
method ReadStep (line 225) | void ReadStep(Random* rnd) {
function TEST (line 288) | TEST(SkipTest, ConcurrentWithoutThreads) {
class TestState (line 297) | class TestState {
type ReaderState (line 303) | enum ReaderState {
method TestState (line 309) | explicit TestState(int s)
method Wait (line 315) | void Wait(ReaderState s) {
method Change (line 323) | void Change(ReaderState s) {
function ConcurrentReader (line 336) | static void ConcurrentReader(void* arg) {
function RunConcurrent (line 348) | static void RunConcurrent(int run) {
function TEST (line 368) | TEST(SkipTest, Concurrent1) { RunConcurrent(1); }
function TEST (line 369) | TEST(SkipTest, Concurrent2) { RunConcurrent(2); }
function TEST (line 370) | TEST(SkipTest, Concurrent3) { RunConcurrent(3); }
function TEST (line 371) | TEST(SkipTest, Concurrent4) { RunConcurrent(4); }
function TEST (line 372) | TEST(SkipTest, Concurrent5) { RunConcurrent(5); }
function main (line 376) | int main(int argc, char** argv) {
FILE: src/leveldb/db/snapshot.h
function namespace (line 11) | namespace leveldb {
FILE: src/leveldb/db/table_cache.cc
type leveldb (line 12) | namespace leveldb {
type TableAndFile (line 14) | struct TableAndFile {
function DeleteEntry (line 19) | static void DeleteEntry(const Slice& key, void* value) {
function UnrefEntry (line 26) | static void UnrefEntry(void* arg1, void* arg2) {
function Status (line 45) | Status TableCache::FindTable(uint64_t file_number, uint64_t file_size,
function Iterator (line 82) | Iterator* TableCache::NewIterator(const ReadOptions& options,
function Status (line 105) | Status TableCache::Get(const ReadOptions& options,
FILE: src/leveldb/db/table_cache.h
function namespace (line 17) | namespace leveldb {
FILE: src/leveldb/db/version_edit.cc
type leveldb (line 10) | namespace leveldb {
type Tag (line 14) | enum Tag {
function GetInternalKey (line 88) | static bool GetInternalKey(Slice* input, InternalKey* dst) {
function GetLevel (line 98) | static bool GetLevel(Slice* input, int* level) {
function Status (line 109) | Status VersionEdit::DecodeFrom(const Slice& src) {
FILE: src/leveldb/db/version_edit.h
function namespace (line 13) | namespace leveldb {
FILE: src/leveldb/db/version_edit_test.cc
type leveldb (line 8) | namespace leveldb {
function TestEncodeDecode (line 10) | static void TestEncodeDecode(const VersionEdit& edit) {
class VersionEditTest (line 20) | class VersionEditTest { }
function TEST (line 22) | TEST(VersionEditTest, EncodeDecode) {
function main (line 44) | int main(int argc, char** argv) {
FILE: src/leveldb/db/version_set.cc
type leveldb (line 21) | namespace leveldb {
function TargetFileSize (line 23) | static size_t TargetFileSize(const Options* options) {
function MaxGrandParentOverlapBytes (line 29) | static int64_t MaxGrandParentOverlapBytes(const Options* options) {
function ExpandedCompactionByteSizeLimit (line 36) | static int64_t ExpandedCompactionByteSizeLimit(const Options* options) {
function MaxBytesForLevel (line 40) | static double MaxBytesForLevel(const Options* options, int level) {
function MaxFileSizeForLevel (line 53) | static uint64_t MaxFileSizeForLevel(const Options* options, int level) {
function TotalFileSize (line 58) | static int64_t TotalFileSize(const std::vector<FileMetaData*>& files) {
function FindFile (line 86) | int FindFile(const InternalKeyComparator& icmp,
function AfterFile (line 107) | static bool AfterFile(const Comparator* ucmp,
function BeforeFile (line 114) | static bool BeforeFile(const Comparator* ucmp,
function SomeFileOverlapsRange (line 121) | bool SomeFileOverlapsRange(
class Version::LevelFileNumIterator (line 163) | class Version::LevelFileNumIterator : public Iterator {
method LevelFileNumIterator (line 165) | LevelFileNumIterator(const InternalKeyComparator& icmp,
method Valid (line 171) | virtual bool Valid() const {
method Seek (line 174) | virtual void Seek(const Slice& target) {
method SeekToFirst (line 177) | virtual void SeekToFirst() { index_ = 0; }
method SeekToLast (line 178) | virtual void SeekToLast() {
method Next (line 181) | virtual void Next() {
method Prev (line 185) | virtual void Prev() {
method Slice (line 193) | Slice key() const {
method Slice (line 197) | Slice value() const {
method Status (line 203) | virtual Status status() const { return Status::OK(); }
function Iterator (line 213) | static Iterator* GetFileIterator(void* arg,
function Iterator (line 227) | Iterator* Version::NewConcatenatingIterator(const ReadOptions& options,
type SaverState (line 255) | enum SaverState {
type Saver (line 261) | struct Saver {
function SaveValue (line 268) | static void SaveValue(void* arg, const Slice& ikey, const Slice& v) {
function NewestFirst (line 283) | static bool NewestFirst(FileMetaData* a, FileMetaData* b) {
function Status (line 332) | Status Version::Get(const ReadOptions& options,
type State (line 450) | struct State {
method Match (line 454) | static bool Match(void* arg, int level, FileMetaData* f) {
class VersionSet::Builder (line 603) | class VersionSet::Builder {
type BySmallestKey (line 606) | struct BySmallestKey {
type LevelState (line 621) | struct LevelState {
method Builder (line 632) | Builder(VersionSet* vset, Version* base)
method Apply (line 665) | void Apply(VersionEdit* edit) {
method SaveTo (line 711) | void SaveTo(Version* v) {
method MaybeAddFile (line 759) | void MaybeAddFile(Version* v, int level, FileMetaData* f) {
function Status (line 820) | Status VersionSet::LogAndApply(VersionEdit* edit, port::Mutex* mu) {
function Status (line 905) | Status VersionSet::Recover(bool *save_manifest) {
function Status (line 1102) | Status VersionSet::WriteSnapshot(log::Writer* log) {
function Iterator (line 1258) | Iterator* VersionSet::MakeInputIterator(Compaction* c) {
function Compaction (line 1291) | Compaction* VersionSet::PickCompaction() {
function Compaction (line 1413) | Compaction* VersionSet::CompactRange(
FILE: src/leveldb/db/version_set.h
function namespace (line 26) | namespace leveldb {
FILE: src/leveldb/db/version_set_test.cc
type leveldb (line 10) | namespace leveldb {
class FindFileTest (line 12) | class FindFileTest {
method FindFileTest (line 17) | FindFileTest() : disjoint_sorted_files_(true) { }
method Add (line 25) | void Add(const char* smallest, const char* largest,
method Find (line 35) | int Find(const char* key) {
method Overlaps (line 41) | bool Overlaps(const char* smallest, const char* largest) {
function TEST (line 51) | TEST(FindFileTest, Empty) {
function TEST (line 59) | TEST(FindFileTest, Single) {
function TEST (line 90) | TEST(FindFileTest, Multiple) {
function TEST (line 128) | TEST(FindFileTest, MultipleNullBoundaries) {
function TEST (line 148) | TEST(FindFileTest, OverlapSequenceChecks) {
function TEST (line 157) | TEST(FindFileTest, OverlappingFiles) {
function main (line 177) | int main(int argc, char** argv) {
FILE: src/leveldb/db/write_batch.cc
type leveldb (line 24) | namespace leveldb {
function Status (line 42) | Status WriteBatch::Iterate(Handler* handler) const {
function SequenceNumber (line 90) | SequenceNumber WriteBatchInternal::Sequence(const WriteBatch* b) {
class MemTableInserter (line 112) | class MemTableInserter : public WriteBatch::Handler {
method Put (line 117) | virtual void Put(const Slice& key, const Slice& value) {
method Delete (line 121) | virtual void Delete(const Slice& key) {
function Status (line 128) | Status WriteBatchInternal::InsertInto(const WriteBatch* b,
FILE: src/leveldb/db/write_batch_internal.h
function namespace (line 11) | namespace leveldb {
FILE: src/leveldb/db/write_batch_test.cc
type leveldb (line 13) | namespace leveldb {
function PrintContents (line 15) | static std::string PrintContents(WriteBatch* b) {
class WriteBatchTest (line 55) | class WriteBatchTest { }
function TEST (line 57) | TEST(WriteBatchTest, Empty) {
function TEST (line 63) | TEST(WriteBatchTest, Multiple) {
function TEST (line 77) | TEST(WriteBatchTest, Corruption) {
function TEST (line 90) | TEST(WriteBatchTest, Append) {
function main (line 118) | int main(int argc, char** argv) {
FILE: src/leveldb/doc/bench/db_bench_sqlite3.cc
function ExecErrorCheck (line 81) | inline
function StepErrorCheck (line 90) | inline
function ErrorCheck (line 98) | inline
function WalCheckpoint (line 106) | inline
type leveldb (line 114) | namespace leveldb {
class RandomGenerator (line 118) | class RandomGenerator {
method RandomGenerator (line 124) | RandomGenerator() {
method Slice (line 139) | Slice Generate(int len) {
function Slice (line 149) | static Slice TrimSpace(Slice s) {
class Benchmark (line 163) | class Benchmark {
method PrintHeader (line 181) | void PrintHeader() {
method PrintWarnings (line 194) | void PrintWarnings() {
method PrintEnvironment (line 206) | void PrintEnvironment() {
method Start (line 240) | void Start() {
method FinishedSingleOp (line 250) | void FinishedSingleOp() {
method Stop (line 276) | void Stop(const Slice& name) {
type Order (line 306) | enum Order {
type DBState (line 310) | enum DBState {
method Benchmark (line 315) | Benchmark()
method Run (line 343) | void Run() {
method Open (line 417) | void Open() {
method Write (line 478) | void Write(bool write_sync, Order order, DBState state,
method Read (line 581) | void Read(Order order, int entries_per_batch) {
method ReadSequential (line 649) | void ReadSequential() {
function main (line 669) | int main(int argc, char** argv) {
FILE: src/leveldb/doc/bench/db_bench_tree_db.cc
function DBSynchronize (line 74) | inline
type leveldb (line 83) | namespace leveldb {
class RandomGenerator (line 87) | class RandomGenerator {
method RandomGenerator (line 93) | RandomGenerator() {
method Slice (line 108) | Slice Generate(int len) {
function Slice (line 118) | static Slice TrimSpace(Slice s) {
class Benchmark (line 132) | class Benchmark {
method PrintHeader (line 151) | void PrintHeader() {
method PrintWarnings (line 169) | void PrintWarnings() {
method PrintEnvironment (line 181) | void PrintEnvironment() {
method Start (line 216) | void Start() {
method FinishedSingleOp (line 226) | void FinishedSingleOp() {
method Stop (line 252) | void Stop(const Slice& name) {
type Order (line 282) | enum Order {
type DBState (line 286) | enum DBState {
method Benchmark (line 291) | Benchmark()
method Run (line 319) | void Run() {
method Open (line 389) | void Open(bool sync) {
method Write (line 424) | void Write(bool sync, Order order, DBState state,
method ReadSequential (line 459) | void ReadSequential() {
method ReadRandom (line 470) | void ReadRandom() {
function main (line 484) | int main(int argc, char** argv) {
FILE: src/leveldb/helpers/memenv/memenv.cc
type leveldb (line 16) | namespace leveldb {
class FileState (line 20) | class FileState {
method FileState (line 24) | FileState() : refs_(0), size_(0) {}
method Ref (line 27) | void Ref() {
method Unref (line 33) | void Unref() {
method Size (line 50) | uint64_t Size() const { return size_; }
method Status (line 52) | Status Read(uint64_t offset, size_t n, Slice* result, char* scratch)...
method Status (line 95) | Status Append(const Slice& data) {
class SequentialFileImpl (line 149) | class SequentialFileImpl : public SequentialFile {
method SequentialFileImpl (line 151) | explicit SequentialFileImpl(FileState* file) : file_(file), pos_(0) {
method Status (line 159) | virtual Status Read(size_t n, Slice* result, char* scratch) {
method Status (line 167) | virtual Status Skip(uint64_t n) {
method GetName (line 179) | virtual std::string GetName() const { return "[memenv]"; }
class RandomAccessFileImpl (line 185) | class RandomAccessFileImpl : public RandomAccessFile {
method RandomAccessFileImpl (line 187) | explicit RandomAccessFileImpl(FileState* file) : file_(file) {
method Status (line 195) | virtual Status Read(uint64_t offset, size_t n, Slice* result,
method GetName (line 200) | virtual std::string GetName() const { return "[memenv]"; }
class WritableFileImpl (line 205) | class WritableFileImpl : public WritableFile {
method WritableFileImpl (line 207) | WritableFileImpl(FileState* file) : file_(file) {
method Status (line 215) | virtual Status Append(const Slice& data) {
method Status (line 219) | virtual Status Close() { return Status::OK(); }
method Status (line 220) | virtual Status Flush() { return Status::OK(); }
method Status (line 221) | virtual Status Sync() { return Status::OK(); }
method GetName (line 223) | virtual std::string GetName() const { return "[memenv]"; }
class NoOpLogger (line 228) | class NoOpLogger : public Logger {
method Logv (line 230) | virtual void Logv(const char* format, va_list ap) { }
class InMemoryEnv (line 233) | class InMemoryEnv : public EnvWrapper {
method InMemoryEnv (line 235) | explicit InMemoryEnv(Env* base_env) : EnvWrapper(base_env) { }
method Status (line 244) | virtual Status NewSequentialFile(const std::string& fname,
method Status (line 256) | virtual Status NewRandomAccessFile(const std::string& fname,
method Status (line 268) | virtual Status NewWritableFile(const std::string& fname,
method Status (line 283) | virtual Status NewAppendableFile(const std::string& fname,
method FileExists (line 296) | virtual bool FileExists(const std::string& fname) {
method Status (line 301) | virtual Status GetChildren(const std::string& dir,
method DeleteFileInternal (line 318) | void DeleteFileInternal(const std::string& fname) {
method Status (line 327) | virtual Status DeleteFile(const std::string& fname) {
method Status (line 337) | virtual Status CreateDir(const std::string& dirname) {
method Status (line 341) | virtual Status DeleteDir(const std::string& dirname) {
method Status (line 345) | virtual Status GetFileSize(const std::string& fname, uint64_t* file_...
method Status (line 355) | virtual Status RenameFile(const std::string& src,
method Status (line 368) | virtual Status LockFile(const std::string& fname, FileLock** lock) {
method Status (line 373) | virtual Status UnlockFile(FileLock* lock) {
method Status (line 378) | virtual Status GetTestDirectory(std::string* path) {
method Status (line 383) | virtual Status NewLogger(const std::string& fname, Logger** result) {
function Env (line 397) | Env* NewMemEnv(Env* base_env) {
FILE: src/leveldb/helpers/memenv/memenv.h
function namespace (line 8) | namespace leveldb {
FILE: src/leveldb/helpers/memenv/memenv_test.cc
type leveldb (line 14) | namespace leveldb {
class MemEnvTest (line 16) | class MemEnvTest {
method MemEnvTest (line 20) | MemEnvTest()
function TEST (line 28) | TEST(MemEnvTest, Basics) {
function TEST (line 96) | TEST(MemEnvTest, ReadWrite) {
function TEST (line 138) | TEST(MemEnvTest, Locks) {
function TEST (line 146) | TEST(MemEnvTest, Misc) {
function TEST (line 161) | TEST(MemEnvTest, LargeWrite) {
function TEST (line 194) | TEST(MemEnvTest, DBTest) {
function main (line 239) | int main(int argc, char** argv) {
FILE: src/leveldb/include/leveldb/c.h
type leveldb_t (line 53) | typedef struct leveldb_t leveldb_t;
type leveldb_cache_t (line 54) | typedef struct leveldb_cache_t leveldb_cache_t;
type leveldb_comparator_t (line 55) | typedef struct leveldb_comparator_t leveldb_comparator_t;
type leveldb_env_t (line 56) | typedef struct leveldb_env_t leveldb_env_t;
type leveldb_filelock_t (line 57) | typedef struct leveldb_filelock_t leveldb_filelock_t;
type leveldb_filterpolicy_t (line 58) | typedef struct leveldb_filterpolicy_t leveldb_filterpolicy_t;
type leveldb_iterator_t (line 59) | typedef struct leveldb_iterator_t leveldb_iterator_t;
type leveldb_logger_t (line 60) | typedef struct leveldb_logger_t leveldb_logger_t;
type leveldb_options_t (line 61) | typedef struct leveldb_options_t leveldb_options_t;
type leveldb_randomfile_t (line 62) | typedef struct leveldb_randomfile_t leveldb_randomfile_t;
type leveldb_readoptions_t (line 63) | typedef struct leveldb_readoptions_t leveldb_readoptions_t;
type leveldb_seqfile_t (line 64) | typedef struct leveldb_seqfile_t leveldb_seqfile_t;
type leveldb_snapshot_t (line 65) | typedef struct leveldb_snapshot_t leveldb_snapshot_t;
type leveldb_writablefile_t (line 66) | typedef struct leveldb_writablefile_t leveldb_writablefile_t;
type leveldb_writebatch_t (line 67) | typedef struct leveldb_writebatch_t leveldb_writebatch_t;
type leveldb_writeoptions_t (line 68) | typedef struct leveldb_writeoptions_t leveldb_writeoptions_t;
FILE: src/leveldb/include/leveldb/cache.h
function namespace (line 24) | namespace leveldb {
FILE: src/leveldb/include/leveldb/comparator.h
function namespace (line 10) | namespace leveldb {
FILE: src/leveldb/include/leveldb/db.h
function namespace (line 13) | namespace leveldb {
FILE: src/leveldb/include/leveldb/dumpfile.h
function namespace (line 12) | namespace leveldb {
FILE: src/leveldb/include/leveldb/env.h
function namespace (line 22) | namespace leveldb {
FILE: src/leveldb/include/leveldb/filter_policy.h
function namespace (line 21) | namespace leveldb {
FILE: src/leveldb/include/leveldb/iterator.h
type Cleanup (line 79) | struct Cleanup {
FILE: src/leveldb/include/leveldb/options.h
type CompressionType (line 23) | enum CompressionType {
type Options (line 31) | struct Options {
type WriteOptions (line 187) | struct WriteOptions {
FILE: src/leveldb/include/leveldb/slice.h
function namespace (line 23) | namespace leveldb {
function compare (line 96) | inline int Slice::compare(const Slice& b) const {
FILE: src/leveldb/include/leveldb/status.h
function namespace (line 19) | namespace leveldb {
FILE: src/leveldb/include/leveldb/table.h
function namespace (line 11) | namespace leveldb {
FILE: src/leveldb/include/leveldb/table_builder.h
function namespace (line 20) | namespace leveldb {
FILE: src/leveldb/include/leveldb/write_batch.h
function namespace (line 27) | namespace leveldb {
FILE: src/leveldb/issues/issue178_test.cc
function Key1 (line 18) | std::string Key1(int i) {
function Key2 (line 24) | std::string Key2(int i) {
class Issue178 (line 28) | class Issue178 { }
function TEST (line 30) | TEST(Issue178, Test) {
function main (line 90) | int main(int argc, char** argv) {
FILE: src/leveldb/issues/issue200_test.cc
type leveldb (line 12) | namespace leveldb {
class Issue200 (line 14) | class Issue200 { }
function TEST (line 16) | TEST(Issue200, Test) {
function main (line 57) | int main(int argc, char** argv) {
FILE: src/leveldb/port/atomic_pointer.h
function namespace (line 46) | namespace leveldb {
FILE: src/leveldb/port/port_example.h
function namespace (line 13) | namespace leveldb {
FILE: src/leveldb/port/port_posix.cc
type leveldb (line 15) | namespace leveldb {
type port (line 16) | namespace port {
function PthreadCall (line 18) | static void PthreadCall(const char* label, int result) {
function InitOnce (line 52) | void InitOnce(OnceType* once, void (*initializer)()) {
function HasAcceleratedCRC32C (line 56) | bool HasAcceleratedCRC32C() {
FILE: src/leveldb/port/port_posix.h
function namespace (line 78) | namespace leveldb {
FILE: src/leveldb/port/port_posix_sse.cc
type leveldb (line 26) | namespace leveldb {
type port (line 27) | namespace port {
function LE_LOAD32 (line 32) | static inline uint32_t LE_LOAD32(const uint8_t *p) {
function LE_LOAD64 (line 42) | static inline uint64_t LE_LOAD64(const uint8_t *p) {
function AcceleratedCRC32C (line 54) | uint32_t AcceleratedCRC32C(uint32_t crc, const char* buf, size_t siz...
FILE: src/leveldb/port/port_win.cc
type leveldb (line 37) | namespace leveldb {
type port (line 38) | namespace port {
function InitOnce (line 125) | void InitOnce(OnceType* once, void (*initializer)()) {
function HasAcceleratedCRC32C (line 147) | bool HasAcceleratedCRC32C() {
FILE: src/leveldb/port/port_win.h
function namespace (line 46) | namespace leveldb {
FILE: src/leveldb/table/block.cc
type leveldb (line 16) | namespace leveldb {
class Block::Iter (line 76) | class Block::Iter : public Iterator {
method Compare (line 90) | inline int Compare(const Slice& a, const Slice& b) const {
method NextEntryOffset (line 95) | inline uint32_t NextEntryOffset() const {
method GetRestartPoint (line 99) | uint32_t GetRestartPoint(uint32_t index) {
method SeekToRestartPoint (line 104) | void SeekToRestartPoint(uint32_t index) {
method Iter (line 115) | Iter(const Comparator* comparator,
method Valid (line 128) | virtual bool Valid() const { return current_ < restarts_; }
method Status (line 129) | virtual Status status() const { return status_; }
method Slice (line 130) | virtual Slice key() const {
method Slice (line 134) | virtual Slice value() const {
method Next (line 139) | virtual void Next() {
method Prev (line 144) | virtual void Prev() {
method Seek (line 165) | virtual void Seek(const Slice& target) {
method SeekToFirst (line 205) | virtual void SeekToFirst() {
method SeekToLast (line 210) | virtual void SeekToLast() {
method CorruptionError (line 218) | void CorruptionError() {
method ParseNextKey (line 226) | bool ParseNextKey() {
function Iterator (line 256) | Iterator* Block::NewIterator(const Comparator* cmp) {
FILE: src/leveldb/table/block.h
function namespace (line 12) | namespace leveldb {
FILE: src/leveldb/table/block_builder.cc
type leveldb (line 37) | namespace leveldb {
function Slice (line 63) | Slice BlockBuilder::Finish() {
FILE: src/leveldb/table/block_builder.h
function namespace (line 13) | namespace leveldb {
FILE: src/leveldb/table/filter_block.cc
type leveldb (line 10) | namespace leveldb {
function Slice (line 36) | Slice FilterBlockBuilder::Finish() {
FILE: src/leveldb/table/filter_block.h
function namespace (line 19) | namespace leveldb {
FILE: src/leveldb/table/filter_block_test.cc
type leveldb (line 14) | namespace leveldb {
class TestHashFilter (line 17) | class TestHashFilter : public FilterPolicy {
method CreateFilter (line 23) | virtual void CreateFilter(const Slice* keys, int n, std::string* dst...
method KeyMayMatch (line 30) | virtual bool KeyMayMatch(const Slice& key, const Slice& filter) const {
class FilterBlockTest (line 41) | class FilterBlockTest {
function TEST (line 46) | TEST(FilterBlockTest, EmptyBuilder) {
function TEST (line 55) | TEST(FilterBlockTest, SingleChunk) {
function TEST (line 76) | TEST(FilterBlockTest, MultiChunk) {
function main (line 126) | int main(int argc, char** argv) {
FILE: src/leveldb/table/format.cc
type leveldb (line 13) | namespace leveldb {
function Status (line 23) | Status BlockHandle::DecodeFrom(Slice* input) {
function Status (line 43) | Status Footer::DecodeFrom(Slice* input) {
function Status (line 65) | Status ReadBlock(RandomAccessFile* file,
FILE: src/leveldb/table/format.h
function namespace (line 14) | namespace leveldb {
FILE: src/leveldb/table/iterator.cc
type leveldb (line 7) | namespace leveldb {
class EmptyIterator (line 42) | class EmptyIterator : public Iterator {
method EmptyIterator (line 44) | EmptyIterator(const Status& s) : status_(s) { }
method Valid (line 45) | virtual bool Valid() const { return false; }
method Seek (line 46) | virtual void Seek(const Slice& target) { }
method SeekToFirst (line 47) | virtual void SeekToFirst() { }
method SeekToLast (line 48) | virtual void SeekToLast() { }
method Next (line 49) | virtual void Next() { assert(false); }
method Prev (line 50) | virtual void Prev() { assert(false); }
method Slice (line 51) | Slice key() const { assert(false); return Slice(); }
method Slice (line 52) | Slice value() const { assert(false); return Slice(); }
method Status (line 53) | virtual Status status() const { return status_; }
function Iterator (line 59) | Iterator* NewEmptyIterator() {
function Iterator (line 63) | Iterator* NewErrorIterator(const Status& status) {
FILE: src/leveldb/table/iterator_wrapper.h
function namespace (line 11) | namespace leveldb {
FILE: src/leveldb/table/merger.cc
type leveldb (line 11) | namespace leveldb {
class MergingIterator (line 14) | class MergingIterator : public Iterator {
method MergingIterator (line 16) | MergingIterator(const Comparator* comparator, Iterator** children, i...
method Valid (line 31) | virtual bool Valid() const {
method SeekToFirst (line 35) | virtual void SeekToFirst() {
method SeekToLast (line 43) | virtual void SeekToLast() {
method Seek (line 51) | virtual void Seek(const Slice& target) {
method Next (line 59) | virtual void Next() {
method Prev (line 85) | virtual void Prev() {
method Slice (line 114) | virtual Slice key() const {
method Slice (line 119) | virtual Slice value() const {
method Status (line 124) | virtual Status status() const {
type Direction (line 148) | enum Direction {
function Iterator (line 186) | Iterator* NewMergingIterator(const Comparator* cmp, Iterator** list, i...
FILE: src/leveldb/table/merger.h
function namespace (line 8) | namespace leveldb {
FILE: src/leveldb/table/table.cc
type leveldb (line 18) | namespace leveldb {
type Table::Rep (line 20) | struct Table::Rep {
function Status (line 38) | Status Table::Open(const Options& options,
function DeleteBlock (line 147) | static void DeleteBlock(void* arg, void* ignored) {
function DeleteCachedBlock (line 151) | static void DeleteCachedBlock(const Slice& key, void* value) {
function ReleaseBlock (line 156) | static void ReleaseBlock(void* arg, void* h) {
function Iterator (line 164) | Iterator* Table::BlockReader(void* arg,
function Iterator (line 220) | Iterator* Table::NewIterator(const ReadOptions& options) const {
function Status (line 226) | Status Table::InternalGet(const ReadOptions& options, const Slice& k,
FILE: src/leveldb/table/table_builder.cc
type leveldb (line 18) | namespace leveldb {
type TableBuilder::Rep (line 20) | struct TableBuilder::Rep {
method Rep (line 47) | Rep(const Options& opt, WritableFile* f)
function Status (line 76) | Status TableBuilder::ChangeOptions(const Options& options) {
function Status (line 195) | Status TableBuilder::status() const {
function Status (line 199) | Status TableBuilder::Finish() {
FILE: src/leveldb/table/table_test.cc
type leveldb (line 23) | namespace leveldb {
function Reverse (line 27) | static std::string Reverse(const Slice& key) {
class ReverseKeyComparator (line 38) | class ReverseKeyComparator : public Comparator {
method Compare (line 44) | virtual int Compare(const Slice& a, const Slice& b) const {
method FindShortestSeparator (line 48) | virtual void FindShortestSeparator(
method FindShortSuccessor (line 57) | virtual void FindShortSuccessor(std::string* key) const {
function Increment (line 66) | static void Increment(const Comparator* cmp, std::string* key) {
type STLLessThan (line 79) | struct STLLessThan {
method STLLessThan (line 82) | STLLessThan() : cmp(BytewiseComparator()) { }
method STLLessThan (line 83) | STLLessThan(const Comparator* c) : cmp(c) { }
class StringSink (line 90) | class StringSink: public WritableFile {
method Status (line 96) | virtual Status Close() { return Status::OK(); }
method Status (line 97) | virtual Status Flush() { return Status::OK(); }
method Status (line 98) | virtual Status Sync() { return Status::OK(); }
method Status (line 100) | virtual Status Append(const Slice& data) {
class StringSource (line 110) | class StringSource: public RandomAccessFile {
method StringSource (line 112) | StringSource(const Slice& contents)
method Size (line 118) | uint64_t Size() const { return contents_.size(); }
method Status (line 120) | virtual Status Read(uint64_t offset, size_t n, Slice* result,
class Constructor (line 141) | class Constructor {
method Constructor (line 143) | explicit Constructor(const Comparator* cmp) : data_(STLLessThan(cmp)...
method Add (line 146) | void Add(const std::string& key, const Slice& value) {
method Finish (line 153) | void Finish(const Options& options,
method KVMap (line 173) | virtual const KVMap& data() { return data_; }
method DB (line 175) | virtual DB* db() const { return NULL; }
class BlockConstructor (line 181) | class BlockConstructor: public Constructor {
method BlockConstructor (line 183) | explicit BlockConstructor(const Comparator* cmp)
method Status (line 190) | virtual Status FinishImpl(const Options& options, const KVMap& data) {
method Iterator (line 209) | virtual Iterator* NewIterator() const {
class TableConstructor (line 221) | class TableConstructor: public Constructor {
method TableConstructor (line 223) | TableConstructor(const Comparator* cmp)
method Status (line 230) | virtual Status FinishImpl(const Options& options, const KVMap& data) {
method Iterator (line 253) | virtual Iterator* NewIterator() const {
method ApproximateOffsetOf (line 257) | uint64_t ApproximateOffsetOf(const Slice& key) const {
method Reset (line 262) | void Reset() {
class KeyConvertingIterator (line 276) | class KeyConvertingIterator: public Iterator {
method KeyConvertingIterator (line 278) | explicit KeyConvertingIterator(Iterator* iter) : iter_(iter) { }
method Valid (line 280) | virtual bool Valid() const { return iter_->Valid(); }
method Seek (line 281) | virtual void Seek(const Slice& target) {
method SeekToFirst (line 287) | virtual void SeekToFirst() { iter_->SeekToFirst(); }
method SeekToLast (line 288) | virtual void SeekToLast() { iter_->SeekToLast(); }
method Next (line 289) | virtual void Next() { iter_->Next(); }
method Prev (line 290) | virtual void Prev() { iter_->Prev(); }
method Slice (line 292) | virtual Slice key() const {
method Slice (line 302) | virtual Slice value() const { return iter_->value(); }
method Status (line 303) | virtual Status status() const {
class MemTableConstructor (line 316) | class MemTableConstructor: public Constructor {
method MemTableConstructor (line 318) | explicit MemTableConstructor(const Comparator* cmp)
method Status (line 327) | virtual Status FinishImpl(const Options& options, const KVMap& data) {
method Iterator (line 340) | virtual Iterator* NewIterator() const {
class DBConstructor (line 349) | class DBConstructor: public Constructor {
method DBConstructor (line 351) | explicit DBConstructor(const Comparator* cmp)
method Status (line 360) | virtual Status FinishImpl(const Options& options, const KVMap& data) {
method Iterator (line 373) | virtual Iterator* NewIterator() const {
method DB (line 377) | virtual DB* db() const { return db_; }
method NewDB (line 380) | void NewDB() {
type TestType (line 399) | enum TestType {
type TestArgs (line 406) | struct TestArgs {
class Harness (line 437) | class Harness {
method Harness (line 439) | Harness() : constructor_(NULL) { }
method Init (line 441) | void Init(const TestArgs& args) {
method Add (line 473) | void Add(const std::string& key, const std::string& value) {
method Test (line 477) | void Test(Random* rnd) {
method TestForwardScan (line 487) | void TestForwardScan(const std::vector<std::string>& keys,
method TestBackwardScan (line 502) | void TestBackwardScan(const std::vector<std::string>& keys,
method TestRandomAccess (line 517) | void TestRandomAccess(Random* rnd,
method ToString (line 587) | std::string ToString(const KVMap& data, const KVMap::const_iterator&...
method ToString (line 595) | std::string ToString(const KVMap& data,
method ToString (line 604) | std::string ToString(const Iterator* it) {
method PickRandomKey (line 612) | std::string PickRandomKey(Random* rnd, const std::vector<std::string...
method DB (line 640) | DB* db() const { return constructor_->db(); }
function TEST (line 648) | TEST(Harness, Empty) {
function TEST (line 659) | TEST(Harness, ZeroRestartPointsInBlock) {
function TEST (line 678) | TEST(Harness, SimpleEmptyKey) {
function TEST (line 687) | TEST(Harness, SimpleSingle) {
function TEST (line 696) | TEST(Harness, SimpleMulti) {
function TEST (line 707) | TEST(Harness, SimpleSpecialKey) {
function TEST (line 716) | TEST(Harness, Randomized) {
function TEST (line 736) | TEST(Harness, RandomizedLongDB) {
class MemTableTest (line 760) | class MemTableTest { }
function TEST (line 762) | TEST(MemTableTest, Simple) {
function Between (line 787) | static bool Between(uint64_t val, uint64_t low, uint64_t high) {
class TableTest (line 798) | class TableTest { }
function TEST (line 800) | TEST(TableTest, ApproximateOffsetOfPlain) {
function SnappyCompressionSupported (line 830) | static bool SnappyCompressionSupported() {
function TEST (line 836) | TEST(TableTest, ApproximateOffsetOfCompressed) {
function main (line 874) | int main(int argc, char** argv) {
FILE: src/leveldb/table/two_level_iterator.cc
type leveldb (line 12) | namespace leveldb {
class TwoLevelIterator (line 18) | class TwoLevelIterator: public Iterator {
method Valid (line 34) | virtual bool Valid() const {
method Slice (line 37) | virtual Slice key() const {
method Slice (line 41) | virtual Slice value() const {
method Status (line 45) | virtual Status status() const {
method SaveError (line 57) | void SaveError(const Status& s) {
function Iterator (line 174) | Iterator* NewTwoLevelIterator(
FILE: src/leveldb/table/two_level_iterator.h
function namespace (line 10) | namespace leveldb {
FILE: src/leveldb/util/arena.cc
type leveldb (line 8) | namespace leveldb {
FILE: src/leveldb/util/arena.h
function namespace (line 14) | namespace leveldb {
FILE: src/leveldb/util/arena_test.cc
type leveldb (line 10) | namespace leveldb {
class ArenaTest (line 12) | class ArenaTest { }
function TEST (line 14) | TEST(ArenaTest, Empty) {
function TEST (line 18) | TEST(ArenaTest, Simple) {
function main (line 66) | int main(int argc, char** argv) {
FILE: src/leveldb/util/bloom.cc
type leveldb (line 10) | namespace leveldb {
function BloomHash (line 13) | static uint32_t BloomHash(const Slice& key) {
class BloomFilterPolicy (line 17) | class BloomFilterPolicy : public FilterPolicy {
method BloomFilterPolicy (line 23) | explicit BloomFilterPolicy(int bits_per_key)
method CreateFilter (line 35) | virtual void CreateFilter(const Slice* keys, int n, std::string* dst...
method KeyMayMatch (line 63) | virtual bool KeyMayMatch(const Slice& key, const Slice& bloom_filter...
function FilterPolicy (line 91) | const FilterPolicy* NewBloomFilterPolicy(int bits_per_key) {
FILE: src/leveldb/util/bloom_test.cc
type leveldb (line 12) | namespace leveldb {
function Slice (line 16) | static Slice Key(int i, char* buffer) {
class BloomTest (line 21) | class BloomTest {
method BloomTest (line 28) | BloomTest() : policy_(NewBloomFilterPolicy(10)) { }
method Reset (line 34) | void Reset() {
method Add (line 39) | void Add(const Slice& s) {
method Build (line 43) | void Build() {
method FilterSize (line 55) | size_t FilterSize() const {
method DumpFilter (line 59) | void DumpFilter() {
method Matches (line 70) | bool Matches(const Slice& s) {
method FalsePositiveRate (line 77) | double FalsePositiveRate() {
function TEST (line 89) | TEST(BloomTest, EmptyFilter) {
function TEST (line 94) | TEST(BloomTest, Small) {
function NextLength (line 103) | static int NextLength(int length) {
function TEST (line 116) | TEST(BloomTest, VaryingLengths) {
function main (line 160) | int main(int argc, char** argv) {
FILE: src/leveldb/util/cache.cc
type leveldb (line 14) | namespace leveldb {
type LRUHandle (line 42) | struct LRUHandle {
method Slice (line 55) | Slice key() const {
class HandleTable (line 71) | class HandleTable {
method HandleTable (line 73) | HandleTable() : length_(0), elems_(0), list_(NULL) { Resize(); }
method LRUHandle (line 76) | LRUHandle* Lookup(const Slice& key, uint32_t hash) {
method LRUHandle (line 80) | LRUHandle* Insert(LRUHandle* h) {
method LRUHandle (line 96) | LRUHandle* Remove(const Slice& key, uint32_t hash) {
method LRUHandle (line 116) | LRUHandle** FindPointer(const Slice& key, uint32_t hash) {
method Resize (line 125) | void Resize() {
class LRUCache (line 153) | class LRUCache {
method SetCapacity (line 159) | void SetCapacity(size_t capacity) { capacity_ = capacity; }
method TotalCharge (line 169) | size_t TotalCharge() const {
class ShardedLRUCache (line 338) | class ShardedLRUCache : public Cache {
method HashSlice (line 344) | static inline uint32_t HashSlice(const Slice& s) {
method Shard (line 348) | static uint32_t Shard(uint32_t hash) {
method ShardedLRUCache (line 353) | explicit ShardedLRUCache(size_t capacity)
method Handle (line 361) | virtual Handle* Insert(const Slice& key, void* value, size_t charge,
method Handle (line 366) | virtual Handle* Lookup(const Slice& key) {
method Release (line 370) | virtual void Release(Handle* handle) {
method Erase (line 374) | virtual void Erase(const Slice& key) {
method NewId (line 381) | virtual uint64_t NewId() {
method Prune (line 385) | virtual void Prune() {
method TotalCharge (line 390) | virtual size_t TotalCharge() const {
function Cache (line 401) | Cache* NewLRUCache(size_t capacity) {
FILE: src/leveldb/util/cache_test.cc
type leveldb (line 11) | namespace leveldb {
function EncodeKey (line 14) | static std::string EncodeKey(int k) {
function DecodeKey (line 19) | static int DecodeKey(const Slice& k) {
function DecodeValue (line 24) | static int DecodeValue(void* v) { return reinterpret_cast<uintptr_t>(v...
class CacheTest (line 26) | class CacheTest {
method Deleter (line 30) | static void Deleter(const Slice& key, void* v) {
method CacheTest (line 40) | CacheTest() : cache_(NewLRUCache(kCacheSize)) {
method Lookup (line 48) | int Lookup(int key) {
method Insert (line 57) | void Insert(int key, int value, int charge = 1) {
method Erase (line 67) | void Erase(int key) {
function TEST (line 73) | TEST(CacheTest, HitAndMiss) {
function TEST (line 96) | TEST(CacheTest, Erase) {
function TEST (line 115) | TEST(CacheTest, EntriesArePinned) {
function TEST (line 140) | TEST(CacheTest, EvictionPolicy) {
function TEST (line 159) | TEST(CacheTest, UseExceedsCacheSize) {
function TEST (line 176) | TEST(CacheTest, HeavyEntries) {
function TEST (line 203) | TEST(CacheTest, NewId) {
function TEST (line 209) | TEST(CacheTest, Prune) {
function main (line 224) | int main(int argc, char** argv) {
FILE: src/leveldb/util/coding.cc
type leveldb (line 7) | namespace leveldb {
function EncodeFixed32 (line 9) | void EncodeFixed32(char* buf, uint32_t value) {
function EncodeFixed64 (line 20) | void EncodeFixed64(char* buf, uint64_t value) {
function PutFixed32 (line 35) | void PutFixed32(std::string* dst, uint32_t value) {
function PutFixed64 (line 41) | void PutFixed64(std::string* dst, uint64_t value) {
function PutVarint32 (line 75) | void PutVarint32(std::string* dst, uint32_t v) {
function PutVarint64 (line 92) | void PutVarint64(std::string* dst, uint64_t v) {
function PutLengthPrefixedSlice (line 98) | void PutLengthPrefixedSlice(std::string* dst, const Slice& value) {
function VarintLength (line 103) | int VarintLength(uint64_t v) {
function GetVarint32 (line 131) | bool GetVarint32(Slice* input, uint32_t* value) {
function GetVarint64 (line 160) | bool GetVarint64(Slice* input, uint64_t* value) {
function GetLengthPrefixedSlice (line 182) | bool GetLengthPrefixedSlice(Slice* input, Slice* result) {
FILE: src/leveldb/util/coding.h
function namespace (line 19) | namespace leveldb {
FILE: src/leveldb/util/coding_test.cc
type leveldb (line 9) | namespace leveldb {
class Coding (line 11) | class Coding { }
function TEST (line 13) | TEST(Coding, Fixed32) {
function TEST (line 27) | TEST(Coding, Fixed64) {
function TEST (line 55) | TEST(Coding, EncodingOutput) {
function TEST (line 77) | TEST(Coding, Varint32) {
function TEST (line 98) | TEST(Coding, Varint64) {
function TEST (line 134) | TEST(Coding, Varint32Overflow) {
function TEST (line 141) | TEST(Coding, Varint32Truncation) {
function TEST (line 153) | TEST(Coding, Varint64Overflow) {
function TEST (line 160) | TEST(Coding, Varint64Truncation) {
function TEST (line 172) | TEST(Coding, Strings) {
function main (line 194) | int main(int argc, char** argv) {
FILE: src/leveldb/util/comparator.cc
type leveldb (line 12) | namespace leveldb {
class BytewiseComparatorImpl (line 17) | class BytewiseComparatorImpl : public Comparator {
method BytewiseComparatorImpl (line 19) | BytewiseComparatorImpl() { }
method Compare (line 25) | virtual int Compare(const Slice& a, const Slice& b) const {
method FindShortestSeparator (line 29) | virtual void FindShortestSeparator(
method FindShortSuccessor (line 53) | virtual void FindShortSuccessor(std::string* key) const {
function InitModule (line 72) | static void InitModule() {
function Comparator (line 76) | const Comparator* BytewiseComparator() {
FILE: src/leveldb/util/crc32c.cc
type leveldb (line 15) | namespace leveldb {
type crc32c (line 16) | namespace crc32c {
function LE_LOAD32 (line 284) | static inline uint32_t LE_LOAD32(const uint8_t *p) {
function CanAccelerateCRC32C (line 290) | static bool CanAccelerateCRC32C() {
function Extend (line 303) | uint32_t Extend(uint32_t crc, const char* buf, size_t size) {
FILE: src/leveldb/util/crc32c.h
function namespace (line 11) | namespace leveldb {
FILE: src/leveldb/util/crc32c_test.cc
type leveldb (line 8) | namespace leveldb {
type crc32c (line 9) | namespace crc32c {
class CRC (line 11) | class CRC { }
function TEST (line 13) | TEST(CRC, StandardResults) {
function TEST (line 50) | TEST(CRC, Values) {
function TEST (line 54) | TEST(CRC, Extend) {
function TEST (line 59) | TEST(CRC, Mask) {
function main (line 70) | int main(int argc, char** argv) {
FILE: src/leveldb/util/env.cc
type leveldb (line 7) | namespace leveldb {
function Status (line 12) | Status Env::NewAppendableFile(const std::string& fname, WritableFile**...
function Log (line 31) | void Log(Logger* info_log, const char* format, ...) {
function Status (line 40) | static Status DoWriteStringToFile(Env* env, const Slice& data,
function Status (line 62) | Status WriteStringToFile(Env* env, const Slice& data,
function Status (line 67) | Status WriteStringToFileSync(Env* env, const Slice& data,
function Status (line 72) | Status ReadFileToString(Env* env, const std::string& fname, std::strin...
FILE: src/leveldb/util/env_posix.cc
type leveldb (line 31) | namespace leveldb {
function Status (line 38) | static Status IOError(const std::string& context, int err_number) {
class Limiter (line 46) | class Limiter {
method Limiter (line 49) | Limiter(intptr_t n) {
method Acquire (line 55) | bool Acquire() {
method Release (line 71) | void Release() {
method GetAllowed (line 80) | intptr_t GetAllowed() const {
method SetAllowed (line 85) | void SetAllowed(intptr_t v) {
class PosixSequentialFile (line 93) | class PosixSequentialFile: public SequentialFile {
method PosixSequentialFile (line 99) | PosixSequentialFile(const std::string& fname, FILE* f)
method Status (line 103) | virtual Status Read(size_t n, Slice* result, char* scratch) {
method Status (line 118) | virtual Status Skip(uint64_t n) {
method GetName (line 125) | virtual std::string GetName() const { return filename_; }
class PosixRandomAccessFile (line 129) | class PosixRandomAccessFile: public RandomAccessFile {
method PosixRandomAccessFile (line 137) | PosixRandomAccessFile(const std::string& fname, int fd, Limiter* lim...
method Status (line 154) | virtual Status Read(uint64_t offset, size_t n, Slice* result,
method GetName (line 178) | virtual std::string GetName() const { return filename_; }
class PosixMmapReadableFile (line 182) | class PosixMmapReadableFile: public RandomAccessFile {
method PosixMmapReadableFile (line 191) | PosixMmapReadableFile(const std::string& fname, void* base, size_t l...
method Status (line 202) | virtual Status Read(uint64_t offset, size_t n, Slice* result,
method GetName (line 214) | virtual std::string GetName() const { return filename_; }
class PosixWritableFile (line 217) | class PosixWritableFile : public WritableFile {
method PosixWritableFile (line 223) | PosixWritableFile(const std::string& fname, FILE* f)
method Status (line 233) | virtual Status Append(const Slice& data) {
method Status (line 241) | virtual Status Close() {
method Status (line 250) | virtual Status Flush() {
method Status (line 257) | Status SyncDirIfManifest() {
method Status (line 284) | virtual Status Sync() {
method GetName (line 297) | virtual std::string GetName() const { return filename_; }
function LockOrUnlock (line 300) | static int LockOrUnlock(int fd, bool lock) {
class PosixFileLock (line 311) | class PosixFileLock : public FileLock {
class PosixLockTable (line 320) | class PosixLockTable {
method Insert (line 325) | bool Insert(const std::string& fname) {
method Remove (line 329) | void Remove(const std::string& fname) {
class PosixEnv (line 335) | class PosixEnv : public Env {
method Status (line 344) | virtual Status NewSequentialFile(const std::string& fname,
method Status (line 356) | virtual Status NewRandomAccessFile(const std::string& fname,
method Status (line 384) | virtual Status NewWritableFile(const std::string& fname,
method Status (line 397) | virtual Status NewAppendableFile(const std::string& fname,
method FileExists (line 410) | virtual bool FileExists(const std::string& fname) {
method Status (line 414) | virtual Status GetChildren(const std::string& dir,
method Status (line 429) | virtual Status DeleteFile(const std::string& fname) {
method Status (line 437) | virtual Status CreateDir(const std::string& name) {
method Status (line 445) | virtual Status DeleteDir(const std::string& name) {
method Status (line 453) | virtual Status GetFileSize(const std::string& fname, uint64_t* size) {
method Status (line 465) | virtual Status RenameFile(const std::string& src, const std::string&...
method Status (line 473) | virtual Status LockFile(const std::string& fname, FileLock** lock) {
method Status (line 495) | virtual Status UnlockFile(FileLock* lock) {
method Status (line 511) | virtual Status GetTestDirectory(std::string* result) {
method gettid (line 525) | static uint64_t gettid() {
method Status (line 532) | virtual Status NewLogger(const std::string& fname, Logger** result) {
method NowMicros (line 543) | virtual uint64_t NowMicros() {
method SleepForMicroseconds (line 549) | virtual void SleepForMicroseconds(int micros) {
method PthreadCall (line 554) | void PthreadCall(const char* label, int result) {
type BGItem (line 574) | struct BGItem { void* arg; void (*function)(void*); }
function MaxMmaps (line 584) | static int MaxMmaps() {
function MaxOpenFiles (line 594) | static intptr_t MaxOpenFiles() {
type StartThreadState (line 662) | struct StartThreadState {
function InitDefaultEnv (line 687) | static void InitDefaultEnv() { default_env = new PosixEnv; }
function Env (line 699) | Env* Env::Default() {
FILE: src/leveldb/util/env_posix_test.cc
type leveldb (line 11) | namespace leveldb {
class EnvPosixTest (line 17) | class EnvPosixTest {
method EnvPosixTest (line 20) | EnvPosixTest() : env_(Env::Default()) { }
method SetFileLimits (line 22) | static void SetFileLimits(int read_only_file_limit, int mmap_limit) {
function TEST (line 28) | TEST(EnvPosixTest, TestOpenOnRead) {
function main (line 61) | int main(int argc, char** argv) {
FILE: src/leveldb/util/env_posix_test_helper.h
function namespace (line 8) | namespace leveldb {
FILE: src/leveldb/util/env_test.cc
type leveldb (line 10) | namespace leveldb {
class EnvTest (line 16) | class EnvTest {
method EnvTest (line 23) | EnvTest() : env_(Env::Default()) { }
function SetBool (line 26) | static void SetBool(void* ptr) {
function TEST (line 30) | TEST(EnvTest, RunImmediately) {
function TEST (line 37) | TEST(EnvTest, RunMany) {
type State (line 69) | struct State {
function ThreadBody (line 75) | static void ThreadBody(void* arg) {
function TEST (line 83) | TEST(EnvTest, StartThread) {
function main (line 104) | int main(int argc, char** argv) {
FILE: src/leveldb/util/env_win.cc
type leveldb (line 38) | namespace leveldb
type Win32 (line 41) | namespace Win32
type WorkItemWrapper (line 64) | struct WorkItemWrapper
class Win32SequentialFile (line 73) | class Win32SequentialFile : public SequentialFile
method GetName (line 81) | virtual std::string GetName() const { return _filename; }
class Win32RandomAccessFile (line 91) | class Win32RandomAccessFile : public RandomAccessFile
method GetName (line 98) | virtual std::string GetName() const { return _filename; }
class Win32WritableFile (line 108) | class Win32WritableFile : public WritableFile
method GetName (line 119) | virtual std::string GetName() const { return filename_; }
class Win32FileLock (line 125) | class Win32FileLock : public FileLock
class Win32Logger (line 140) | class Win32Logger : public Logger
class Win32Env (line 152) | class Win32Env : public Env
function ToWidePath (line 204) | void ToWidePath(const std::string& value, std::wstring& target) {
function ToNarrowPath (line 210) | void ToNarrowPath(const std::wstring& value, std::string& target) {
function GetCurrentDir (line 216) | std::string GetCurrentDir()
function GetCurrentDirW (line 224) | std::wstring GetCurrentDirW()
function GetLastErrSz (line 251) | std::string GetLastErrSz()
function GetLastErrSzW (line 271) | std::wstring GetLastErrSzW()
function DWORD (line 296) | DWORD WINAPI WorkItemWrapperProc(LPVOID pContent)
function GetPageSize (line 306) | size_t GetPageSize()
function Status (line 327) | Status Win32SequentialFile::Read( size_t n, Slice* result, char* scr...
function Status (line 339) | Status Win32SequentialFile::Skip( uint64_t n )
function BOOL (line 350) | BOOL Win32SequentialFile::isEnable()
function BOOL (line 355) | BOOL Win32SequentialFile::_Init()
function Status (line 392) | Status Win32RandomAccessFile::Read(uint64_t offset,size_t n,Slice* r...
function BOOL (line 407) | BOOL Win32RandomAccessFile::_Init( LPCWSTR path )
function BOOL (line 420) | BOOL Win32RandomAccessFile::isEnable()
function Status (line 461) | Status Win32WritableFile::Append(const Slice& data)
function Status (line 470) | Status Win32WritableFile::Close()
function Status (line 479) | Status Win32WritableFile::Flush()
function Status (line 485) | Status Win32WritableFile::Sync()
function BOOL (line 493) | BOOL Win32WritableFile::isEnable()
function BOOL (line 511) | BOOL Win32FileLock::_Init( LPCWSTR path )
function BOOL (line 530) | BOOL Win32FileLock::isEnable()
function Status (line 622) | Status Win32Env::GetChildren(const std::string& dir, std::vector<std...
function Status (line 656) | Status Win32Env::DeleteFile( const std::string& fname )
function Status (line 669) | Status Win32Env::GetFileSize( const std::string& fname, uint64_t* fi...
function Status (line 687) | Status Win32Env::RenameFile( const std::string& src, const std::stri...
function Status (line 710) | Status Win32Env::LockFile( const std::string& fname, FileLock** lock )
function Status (line 726) | Status Win32Env::UnlockFile( FileLock* lock )
function Status (line 745) | Status Win32Env::GetTestDirectory( std::string* path )
function Status (line 764) | static Status CreateDirInner( const std::string& dirname )
function Status (line 783) | Status Win32Env::CreateDir( const std::string& dirname )
function Status (line 794) | Status Win32Env::DeleteDir( const std::string& dirname )
function Status (line 806) | Status Win32Env::NewSequentialFile( const std::string& fname, Sequen...
function Status (line 821) | Status Win32Env::NewRandomAccessFile( const std::string& fname, Rand...
function Status (line 835) | Status Win32Env::NewLogger( const std::string& fname, Logger** result )
function Status (line 851) | Status Win32Env::NewWritableFile( const std::string& fname, Writable...
function Status (line 864) | Status Win32Env::NewAppendableFile( const std::string& fname, Writab...
function InitDefaultEnv (line 892) | static void InitDefaultEnv() { default_env = new Win32::Win32Env(); }
function Env (line 894) | Env* Env::Default() {
FILE: src/leveldb/util/filter_policy.cc
type leveldb (line 7) | namespace leveldb {
FILE: src/leveldb/util/hash.cc
type leveldb (line 16) | namespace leveldb {
function Hash (line 18) | uint32_t Hash(const char* data, size_t n, uint32_t seed) {
FILE: src/leveldb/util/hash.h
function namespace (line 13) | namespace leveldb {
FILE: src/leveldb/util/hash_test.cc
type leveldb (line 8) | namespace leveldb {
class HASH (line 10) | class HASH { }
function TEST (line 12) | TEST(HASH, SignedUnsignedIssue) {
function main (line 52) | int main(int argc, char** argv) {
FILE: src/leveldb/util/histogram.cc
type leveldb (line 10) | namespace leveldb {
FILE: src/leveldb/util/histogram.h
function namespace (line 10) | namespace leveldb {
FILE: src/leveldb/util/logging.cc
type leveldb (line 14) | namespace leveldb {
function AppendNumberTo (line 16) | void AppendNumberTo(std::string* str, uint64_t num) {
function AppendEscapedStringTo (line 22) | void AppendEscapedStringTo(std::string* str, const Slice& value) {
function NumberToString (line 36) | std::string NumberToString(uint64_t num) {
function EscapeString (line 42) | std::string EscapeString(const Slice& value) {
function ConsumeDecimalNumber (line 48) | bool ConsumeDecimalNumber(Slice* in, uint64_t* val) {
FILE: src/leveldb/util/logging.h
function namespace (line 16) | namespace leveldb {
FILE: src/leveldb/util/mutexlock.h
function namespace (line 11) | namespace leveldb {
FILE: src/leveldb/util/options.cc
type leveldb (line 10) | namespace leveldb {
FILE: src/leveldb/util/posix_logger.h
function namespace (line 17) | namespace leveldb {
FILE: src/leveldb/util/random.h
function namespace (line 10) | namespace leveldb {
FILE: src/leveldb/util/status.cc
type leveldb (line 9) | namespace leveldb {
FILE: src/leveldb/util/testharness.cc
type leveldb (line 12) | namespace leveldb {
type test (line 13) | namespace test {
type Test (line 16) | struct Test {
function RegisterTest (line 24) | bool RegisterTest(const char* base, const char* name, void (*func)()) {
function RunAllTests (line 36) | int RunAllTests() {
function TmpDir (line 60) | std::string TmpDir() {
function RandomSeed (line 67) | int RandomSeed() {
FILE: src/leveldb/util/testharness.h
function namespace (line 15) | namespace leveldb {
FILE: src/leveldb/util/testutil.cc
type leveldb (line 9) | namespace leveldb {
type test (line 10) | namespace test {
function Slice (line 12) | Slice RandomString(Random* rnd, int len, std::string* dst) {
function RandomKey (line 20) | std::string RandomKey(Random* rnd, int len) {
function Slice (line 34) | extern Slice CompressibleString(Random* rnd, double compressed_fract...
FILE: src/leveldb/util/testutil.h
function namespace (line 12) | namespace leveldb {
FILE: src/limitedmap.h
type V (line 17) | typedef V mapped_type;
type std (line 18) | typedef std::pair<const key_type, mapped_type> value_type;
type typename (line 19) | typedef typename std::map<K, V>::const_iterator const_iterator;
type typename (line 20) | typedef typename std::map<K, V>::size_type size_type;
type typename (line 24) | typedef typename std::map<K, V>::iterator iterator;
type typename (line 26) | typedef typename std::multimap<V, iterator>::iterator rmap_iterator;
function const_iterator (line 39) | const_iterator find(const key_type& k) const { return map.find(k); }
function size_type (line 40) | size_type count(const key_type& k) const { return map.count(k); }
function insert (line 41) | void insert(const value_type& x)
function erase (line 52) | void erase(const key_type& k)
function update (line 67) | void update(const_iterator itIn, const mapped_type& v)
function size_type (line 88) | size_type max_size(size_type s)
FILE: src/memusage.h
function namespace (line 20) | namespace memusage
function DynamicUsage (line 97) | inline size_t DynamicUsage(const std::set<X, Y>& s)
function IncrementalDynamicUsage (line 103) | inline size_t IncrementalDynamicUsage(const std::set<X, Y>& s)
function DynamicUsage (line 109) | inline size_t DynamicUsage(const std::map<X, Y, Z>& m)
function IncrementalDynamicUsage (line 115) | inline size_t IncrementalDynamicUsage(const std::map<X, Y, Z>& m)
function DynamicUsage (line 123) | inline size_t DynamicUsage(const indirectmap<X, Y>& m)
function IncrementalDynamicUsage (line 129) | inline size_t IncrementalDynamicUsage(const indirectmap<X, Y>& m)
function DynamicUsage (line 135) | inline size_t DynamicUsage(const std::unique_ptr<X>& p)
function DynamicUsage (line 141) | inline size_t DynamicUsage(const std::shared_ptr<X>& p)
function DynamicUsage (line 157) | inline size_t DynamicUsage(const std::unordered_set<X, Y>& s)
function DynamicUsage (line 163) | inline size_t DynamicUsage(const std::unordered_map<X, Y, Z>& m)
FILE: src/merkleblock.cpp
function uint256 (line 40) | uint256 CPartialMerkleTree::CalcHash(int height, unsigned int pos, const...
function uint256 (line 78) | uint256 CPartialMerkleTree::TraverseAndExtract(int height, unsigned int ...
function uint256 (line 132) | uint256 CPartialMerkleTree::ExtractMatches(std::vector<uint256> &vMatch,...
FILE: src/merkleblock.h
function class (line 50) | class CPartialMerkleTree
function class (line 133) | class CMerkleBlock
FILE: src/miner.cpp
function UpdateTime (line 48) | int64_t UpdateTime(CBlockHeader* pblock, const Consensus::Params& consen...
function DefaultOptions (line 75) | static BlockAssembler::Options DefaultOptions(const CChainParams& params)
function IncrementExtraNonce (line 441) | void IncrementExtraNonce(CBlock* pblock, const CBlockIndex* pindexPrev, ...
FILE: src/miner.h
function namespace (line 21) | namespace Consensus { struct Params; }
type CBlockTemplate (line 25) | struct CBlockTemplate
function GetModifiedFee (line 35) | struct CTxMemPoolModifiedEntry {
type CompareCTxMemPoolIter (line 61) | struct CompareCTxMemPoolIter {
type modifiedentry_iter (line 68) | struct modifiedentry_iter {
type CompareTxIterByAncestorCount (line 79) | struct CompareTxIterByAncestorCount {
type boost (line 88) | typedef boost::multi_index_container<
type indexed_modified_transaction_set (line 105) | typedef indexed_modified_transaction_set::nth_index<0>::type::iterator m...
type indexed_modified_transaction_set (line 106) | typedef indexed_modified_transaction_set::index<ancestor_score>::type::i...
type update_for_parent_inclusion (line 108) | struct update_for_parent_inclusion
function class (line 123) | class BlockAssembler
FILE: src/net.cpp
type BindFlags (line 67) | enum BindFlags {
function GetListenPort (line 97) | unsigned short GetListenPort()
function GetLocal (line 103) | bool GetLocal(CService& addr, const CNetAddr *paddrPeer)
function convertSeed6 (line 128) | static std::vector<CAddress> convertSeed6(const std::vector<SeedSpec6> &...
function CAddress (line 151) | CAddress GetLocalAddress(const CNetAddr *paddrPeer, ServiceFlags nLocalS...
function GetnScore (line 163) | int GetnScore(const CService& addr)
function IsPeerAddrLocalGood (line 172) | bool IsPeerAddrLocalGood(CNode *pnode)
function AdvertiseLocal (line 180) | void AdvertiseLocal(CNode *pnode)
function AddLocal (line 203) | bool AddLocal(const CService& addr, int nScore)
function AddLocal (line 229) | bool AddLocal(const CNetAddr &addr, int nScore)
function RemoveLocal (line 234) | bool RemoveLocal(const CService& addr)
function SetLimited (line 243) | void SetLimited(enum Network net, bool fLimited)
function IsLimited (line 251) | bool IsLimited(enum Network net)
function IsLimited (line 257) | bool IsLimited(const CNetAddr &addr)
function SeenLocal (line 263) | bool SeenLocal(const CService& addr)
function IsLocal (line 276) | bool IsLocal(const CService& addr)
function IsReachable (line 283) | bool IsReachable(enum Network net)
function IsReachable (line 290) | bool IsReachable(const CNetAddr& addr)
function CNode (line 297) | CNode* CConnman::FindNode(const CNetAddr& ip)
function CNode (line 308) | CNode* CConnman::FindNode(const CSubNet& subNet)
function CNode (line 319) | CNode* CConnman::FindNode(const std::string& addrName)
function CNode (line 330) | CNode* CConnman::FindNode(const CService& addr)
function CAddress (line 352) | static CAddress GetBindAddress(SOCKET sock)
function CNode (line 367) | CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, ...
function CService (line 665) | CService CNode::GetAddrLocal() const {
function uint256 (line 865) | const uint256& CNetMessage::GetMessageHash() const
type NodeEvictionCandidate (line 934) | struct NodeEvictionCandidate
function ReverseCompareNodeMinPingTime (line 948) | static bool ReverseCompareNodeMinPingTime(const NodeEvictionCandidate &a...
function ReverseCompareNodeTimeConnected (line 953) | static bool ReverseCompareNodeTimeConnected(const NodeEvictionCandidate ...
function CompareNetGroupKeyed (line 958) | static bool CompareNetGroupKeyed(const NodeEvictionCandidate &a, const N...
function CompareNodeBlockTime (line 962) | static bool CompareNodeBlockTime(const NodeEvictionCandidate &a, const N...
function CompareNodeTXTime (line 970) | static bool CompareNodeTXTime(const NodeEvictionCandidate &a, const Node...
function EraseLastKElements (line 982) | static void EraseLastKElements(std::vector<T> &elements, Comparator comp...
type sockaddr_storage (line 1072) | struct sockaddr_storage
type sockaddr (line 1074) | struct sockaddr
type sockaddr (line 1080) | struct sockaddr
type timeval (line 1221) | struct timeval
function ThreadMapPort (line 1463) | void ThreadMapPort()
function MapPort (line 1550) | void MapPort(bool fUseUPnP)
function MapPort (line 1570) | void MapPort(bool)
type sockaddr_storage (line 2056) | struct sockaddr_storage
type sockaddr (line 2058) | struct sockaddr
type sockaddr (line 2096) | struct sockaddr
function Discover (line 2126) | void Discover(boost::thread_group& threadGroup)
function NodeId (line 2213) | NodeId CConnman::GetNewNodeId()
type in_addr (line 2241) | struct in_addr
class CNetCleanup (line 2368) | class CNetCleanup
method CNetCleanup (line 2371) | CNetCleanup() {}
function ServiceFlags (line 2669) | ServiceFlags CConnman::GetLocalServices() const
function PoissonNextSend (line 2852) | int64_t PoissonNextSend(int64_t nNow, int average_interval_seconds) {
function CSipHasher (line 2856) | CSipHasher CConnman::GetDeterministicRandomizer(uint64_t id) const
FILE: src/net.h
function namespace (line 40) | namespace boost {
type NodeId (line 90) | typedef int64_t NodeId;
type AddedNodeInfo (line 92) | struct AddedNodeInfo
type CSerializedNetMsg (line 103) | struct CSerializedNetMsg
function class (line 117) | class CConnman
type CombinerAll (line 449) | struct CombinerAll
function class (line 467) | class NetEventsInterface
type Network (line 489) | enum Network
type Network (line 490) | enum Network
type Network (line 498) | enum Network
type LocalServiceInfo (line 512) | struct LocalServiceInfo {
type std (line 519) | typedef std::map<std::string, uint64_t> mapMsgCmdSize;
function class (line 521) | class CNodeStats
function class (line 556) | class CNetMessage {
function uint256 (line 587) | const uint256& GetMessageHash() const;
FILE: src/net_processing.cpp
type IteratorComparator (line 42) | struct IteratorComparator
type COrphanTx (line 51) | struct COrphanTx {
type QueuedBlock (line 113) | struct QueuedBlock {
type CBlockReject (line 145) | struct CBlockReject {
type CNodeState (line 157) | struct CNodeState {
type ChainSyncTimeoutState (line 227) | struct ChainSyncTimeoutState {
method CNodeState (line 243) | CNodeState(CAddress addrIn, std::string addrNameIn) : address(addrIn),...
function CNodeState (line 274) | CNodeState *State(NodeId pnode) {
type ChainSyncTimeoutState (line 227) | struct ChainSyncTimeoutState {
method CNodeState (line 243) | CNodeState(CAddress addrIn, std::string addrNameIn) : address(addrIn),...
function UpdatePreferredDownload (line 281) | void UpdatePreferredDownload(CNode* node, CNodeState* state)
function PushNodeVersion (line 291) | void PushNodeVersion(CNode *pnode, CConnman* connman, int64_t nTime)
function MarkBlockAsReceived (line 315) | bool MarkBlockAsReceived(const uint256& hash) {
function MarkBlockAsInFlight (line 341) | bool MarkBlockAsInFlight(NodeId nodeid, const uint256& hash, const CBloc...
function ProcessBlockAvailability (line 375) | void ProcessBlockAvailability(NodeId nodeid) {
function UpdateBlockAvailability (line 390) | void UpdateBlockAvailability(NodeId nodeid, const uint256 &hash) {
function MaybeSetPeerAsAnnouncingHeaderAndIDs (line 407) | void MaybeSetPeerAsAnnouncingHeaderAndIDs(NodeId nodeid, CConnman* connm...
function TipMayBeStale (line 440) | bool TipMayBeStale(const Consensus::Params &consensusParams)
function CanDirectFetch (line 450) | bool CanDirectFetch(const Consensus::Params &consensusParams)
function PeerHasHeader (line 456) | bool PeerHasHeader(CNodeState *state, const CBlockIndex *pindex)
function FindNextBlocksToDownload (line 467) | void FindNextBlocksToDownload(NodeId nodeid, unsigned int count, std::ve...
function UpdateLastBlockAnnounceTime (line 557) | void UpdateLastBlockAnnounceTime(NodeId node, int64_t time_in_seconds)
function IsOutboundDisconnectionCandidate (line 566) | bool IsOutboundDisconnectionCandidate(const CNode *node)
function GetNodeStateStats (line 618) | bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats) {
function EXCLUSIVE_LOCKS_REQUIRED (line 638) | EXCLUSIVE_LOCKS_REQUIRED(g_cs_orphans)
function EXCLUSIVE_LOCKS_REQUIRED (line 649) | EXCLUSIVE_LOCKS_REQUIRED(g_cs_orphans)
function EXCLUSIVE_LOCKS_REQUIRED (line 682) | EXCLUSIVE_LOCKS_REQUIRED(g_cs_orphans)
function EraseOrphansFor (line 700) | void EraseOrphansFor(NodeId peer)
function LimitOrphanTxSize (line 717) | unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans)
function Misbehaving (line 756) | void Misbehaving(NodeId pnode, int howmuch)
function BlockRequestAllowed (line 791) | static bool BlockRequestAllowed(const CBlockIndex* pindex, const Consens...
function EXCLUSIVE_LOCKS_REQUIRED (line 963) | EXCLUSIVE_LOCKS_REQUIRED(cs_main)
function RelayTransaction (line 999) | static void RelayTransaction(const CTransaction& tx, CConnman* connman)
function RelayAddress (line 1008) | static void RelayAddress(const CAddress& addr, bool fReachable, CConnman...
function ProcessGetBlockData (line 1044) | void static ProcessGetBlockData(CNode* pfrom, const Consensus::Params& c...
function ProcessGetData (line 1186) | void static ProcessGetData(CNode* pfrom, const Consensus::Params& consen...
function GetFetchFlags (line 1250) | uint32_t GetFetchFlags(CNode* pfrom) {
function SendBlockTransactions (line 1258) | inline void static SendBlockTransactions(const CBlock& block, const Bloc...
function ProcessHeadersMessage (line 1275) | bool static ProcessHeadersMessage(CNode *pfrom, CConnman *connman, const...
function ProcessMessage (line 1498) | bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, ...
function SendRejectsAndCheckIfBanned (line 2862) | static bool SendRejectsAndCheckIfBanned(CNode* pnode, CConnman* connman)
class CompareInvMempoolOrder (line 3144) | class CompareInvMempoolOrder
method CompareInvMempoolOrder (line 3148) | explicit CompareInvMempoolOrder(CTxMemPool *_mempool)
class CNetProcessingCleanup (line 3697) | class CNetProcessingCleanup
method CNetProcessingCleanup (line 3700) | CNetProcessingCleanup() {}
FILE: src/net_processing.h
type CNodeStateStats (line 81) | struct CNodeStateStats {
FILE: src/netaddress.cpp
type in_addr (line 75) | struct in_addr
type in6_addr (line 80) | struct in6_addr
type Network (line 242) | enum Network
type sockaddr_storage (line 266) | struct sockaddr_storage
type sockaddr (line 268) | struct sockaddr
type sockaddr (line 270) | struct sockaddr
type in_addr (line 303) | struct in_addr
type in6_addr (line 311) | struct in6_addr
function GetExtNetwork (line 404) | int static GetExtNetwork(const CNetAddr *addr)
type Reachability (line 416) | enum Reachability {
type in_addr (line 486) | struct in_addr
type in6_addr (line 490) | struct in6_addr
type sockaddr_in (line 494) | struct sockaddr_in
type sockaddr_in6 (line 499) | struct sockaddr_in6
type sockaddr (line 504) | struct sockaddr
type sockaddr_in (line 508) | struct sockaddr_in
type sockaddr_in6 (line 511) | struct sockaddr_in6
type sockaddr (line 538) | struct sockaddr
type sockaddr_in (line 541) | struct sockaddr_in
type sockaddr_in (line 543) | struct sockaddr_in
type sockaddr_in (line 544) | struct sockaddr_in
type sockaddr_in (line 544) | struct sockaddr_in
type sockaddr_in6 (line 553) | struct sockaddr_in6
type sockaddr_in6 (line 555) | struct sockaddr_in6
type sockaddr_in6 (line 556) | struct sockaddr_in6
type sockaddr_in6 (line 556) | struct sockaddr_in6
function NetmaskBits (line 663) | static inline int NetmaskBits(uint8_t x)
FILE: src/netaddress.h
type Network (line 19) | enum Network
type in_addr (line 39) | struct in_addr
function IsIPv4 (line 56) | bool IsIPv4() const; // IPv4 mapped address (::FFFF:0:0/96, 0.0.0.0/0)
FILE: src/netbase.cpp
function ParseNetwork (line 42) | enum Network ParseNetwork(std::string net) {
function GetNetworkName (line 50) | std::string GetNetworkName(enum Network net) {
function LookupIntern (line 60) | bool static LookupIntern(const char *pszName, std::vector<CNetAddr>& vIP...
function LookupHost (line 117) | bool LookupHost(const char *pszName, std::vector<CNetAddr>& vIP, unsigne...
function LookupHost (line 130) | bool LookupHost(const char *pszName, CNetAddr& addr, bool fAllowLookup)
function Lookup (line 140) | bool Lookup(const char *pszName, std::vector<CService>& vAddr, int portD...
function Lookup (line 158) | bool Lookup(const char *pszName, CService& addr, int portDefault, bool f...
function CService (line 168) | CService LookupNumeric(const char *pszName, int portDefault)
function MillisToTimeval (line 178) | struct timeval MillisToTimeval(int64_t nTimeout)
type SOCKSVersion (line 187) | enum SOCKSVersion: uint8_t {
type SOCKS5Method (line 193) | enum SOCKS5Method: uint8_t {
type SOCKS5Command (line 201) | enum SOCKS5Command: uint8_t {
type SOCKS5Reply (line 208) | enum SOCKS5Reply: uint8_t {
type SOCKS5Atyp (line 221) | enum SOCKS5Atyp: uint8_t {
type IntrRecvError (line 228) | enum class IntrRecvError {
function IntrRecvError (line 247) | static IntrRecvError InterruptibleRecv(uint8_t* data, size_t len, int ti...
type ProxyCredentials (line 287) | struct ProxyCredentials
function Socks5ErrorString (line 294) | std::string Socks5ErrorString(uint8_t err)
function Socks5 (line 319) | static bool Socks5(const std::string& strDest, int port, const ProxyCred...
function SOCKET (line 438) | SOCKET CreateSocket(const CService &addrConnect)
function ConnectSocketDirectly (line 474) | bool ConnectSocketDirectly(const CService &addrConnect, const SOCKET& hS...
function SetProxy (line 540) | bool SetProxy(enum Network net, const proxyType &addrProxy) {
function GetProxy (line 549) | bool GetProxy(enum Network net, proxyType &proxyInfoOut) {
function SetNameProxy (line 558) | bool SetNameProxy(const proxyType &addrProxy) {
function GetNameProxy (line 566) | bool GetNameProxy(proxyType &nameProxyOut) {
function HaveNameProxy (line 574) | bool HaveNameProxy() {
function IsProxy (line 579) | bool IsProxy(const CNetAddr &addr) {
function ConnectThroughProxy (line 588) | bool ConnectThroughProxy(const proxyType &proxy, const std::string& strD...
function LookupSubNet (line 611) | bool LookupSubNet(const char* pszName, CSubNet& ret)
function NetworkErrorString (line 649) | std::string NetworkErrorString(int err)
function NetworkErrorString (line 665) | std::string NetworkErrorString(int err)
function CloseSocket (line 683) | bool CloseSocket(SOCKET& hSocket)
function SetSocketNoDelay (line 726) | bool SetSocketNoDelay(const SOCKET& hSocket)
function InterruptSocks5 (line 733) | void InterruptSocks5(bool interrupt)
FILE: src/netbase.h
function class (line 28) | class proxyType
type Network (line 40) | enum Network
type Network (line 41) | enum Network
type Network (line 42) | enum Network
type Network (line 43) | enum Network
type timeval (line 68) | struct timeval
FILE: src/netmessagemaker.h
function class (line 12) | class CNetMsgMaker
FILE: src/noui.cpp
function noui_ThreadSafeMessageBox (line 15) | static bool noui_ThreadSafeMessageBox(const std::string& message, const ...
function noui_ThreadSafeQuestion (line 42) | static bool noui_ThreadSafeQuestion(const std::string& /* ignored intera...
function noui_InitMessage (line 47) | static void noui_InitMessage(const std::string& message)
function noui_connect (line 52) | void noui_connect()
FILE: src/policy/feerate.cpp
function CAmount (line 23) | CAmount CFeeRate::GetFee(size_t nBytes_) const
FILE: src/policy/feerate.h
function class (line 19) | class CFeeRate
FILE: src/policy/fees.cpp
function StringForFeeEstimateHorizon (line 17) | std::string StringForFeeEstimateHorizon(FeeEstimateHorizon horizon) {
function StringForFeeReason (line 30) | std::string StringForFeeReason(FeeReason reason) {
function FeeModeFromString (line 50) | bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& ...
class TxConfirmStats (line 72) | class TxConfirmStats
method GetMaxConfirms (line 162) | unsigned int GetMaxConfirms() const { return scale * confAvg.size(); }
function CFeeRate (line 664) | CFeeRate CBlockPolicyEstimator::estimateFee(int confTarget) const
function CFeeRate (line 673) | CFeeRate CBlockPolicyEstimator::estimateRawFee(int confTarget, double su...
function CFeeRate (line 820) | CFeeRate CBlockPolicyEstimator::estimateSmartFee(int confTarget, FeeCalc...
function CAmount (line 1005) | CAmount FeeFilterRounder::round(CAm
Copy disabled (too large)
Download .json
Condensed preview — 1347 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (18,689K chars).
[
{
"path": ".gitattributes",
"chars": 35,
"preview": "src/clientversion.cpp export-subst\n"
},
{
"path": ".gitignore",
"chars": 1707,
"preview": "*.tar.gz\n\n*.exe\nsrc/sugarchain\nsrc/sugarchaind\nsrc/sugarchain-cli\nsrc/sugarchain-tx\nsrc/test/test_sugarchain\nsrc/test/te"
},
{
"path": ".travis.yml",
"chars": 7835,
"preview": "sudo: required\ndist: trusty\nos: linux\nlanguage: minimal\ncache:\n directories:\n - depends/built\n - depends/sdk-sources\n"
},
{
"path": ".tx/config",
"chars": 176,
"preview": "[main]\nhost = https://www.transifex.com\n\n[bitcoin.qt-translation-016x]\nfile_filter = src/qt/locale/bitcoin_<lang>.ts\nsou"
},
{
"path": "CONTRIBUTING.md",
"chars": 13886,
"preview": "Contributing to Bitcoin Core\n============================\n\nThe Bitcoin Core project operates an open contributor model w"
},
{
"path": "COPYING",
"chars": 1319,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2009-2010 Satoshi Nakamoto\nCopyright (c) 2009-2018 The Bitcoin Core developers\nCopy"
},
{
"path": "INSTALL.md",
"chars": 161,
"preview": "Building Bitcoin\n================\n\nSee doc/build-*.md for instructions on building the various\nelements of the Bitcoin C"
},
{
"path": "Makefile.am",
"chars": 10874,
"preview": "# Copyright (c) 2013-2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying"
},
{
"path": "README.md",
"chars": 6753,
"preview": "Sugarchain Yumekawa\n===================\n[ 2013-2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
},
{
"path": "build-aux/m4/ax_boost_base.m4",
"chars": 11610,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autoco"
},
{
"path": "build-aux/m4/ax_boost_chrono.m4",
"chars": 4390,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autocon"
},
{
"path": "build-aux/m4/ax_boost_filesystem.m4",
"chars": 4420,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autoconf-"
},
{
"path": "build-aux/m4/ax_boost_program_options.m4",
"chars": 4958,
"preview": "# ============================================================================\n# http://www.gnu.org/software/autoconf-a"
},
{
"path": "build-aux/m4/ax_boost_system.m4",
"chars": 4219,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autocon"
},
{
"path": "build-aux/m4/ax_boost_thread.m4",
"chars": 5154,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autocon"
},
{
"path": "build-aux/m4/ax_boost_unit_test_framework.m4",
"chars": 5971,
"preview": "# ================================================================================\n# http://www.gnu.org/software/autoco"
},
{
"path": "build-aux/m4/ax_check_compile_flag.m4",
"chars": 3330,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autoconf-a"
},
{
"path": "build-aux/m4/ax_check_link_flag.m4",
"chars": 3181,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autoconf-"
},
{
"path": "build-aux/m4/ax_check_preproc_flag.m4",
"chars": 3269,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autoconf-a"
},
{
"path": "build-aux/m4/ax_cxx_compile_stdcxx.m4",
"chars": 14134,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autoconf-a"
},
{
"path": "build-aux/m4/ax_gcc_func_attribute.m4",
"chars": 7739,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autoconf-a"
},
{
"path": "build-aux/m4/ax_pthread.m4",
"chars": 20816,
"preview": "# ===========================================================================\n# http://www.gnu.org/software/autoc"
},
{
"path": "build-aux/m4/bitcoin_find_bdb48.m4",
"chars": 2938,
"preview": "dnl Copyright (c) 2013-2015 The Bitcoin Core developers\ndnl Distributed under the MIT software license, see the accompan"
},
{
"path": "build-aux/m4/bitcoin_qt.m4",
"chars": 21395,
"preview": "dnl Copyright (c) 2013-2016 The Bitcoin Core developers\ndnl Distributed under the MIT software license, see the accompan"
},
{
"path": "build-aux/m4/bitcoin_subdir_to_include.m4",
"chars": 800,
"preview": "dnl Copyright (c) 2013-2014 The Bitcoin Core developers\ndnl Distributed under the MIT software license, see the accompan"
},
{
"path": "build-aux/m4/l_atomic.m4",
"chars": 1252,
"preview": "dnl Copyright (c) 2015 Tim Kosse <tim.kosse@filezilla-project.org>\ndnl Copying and distribution of this file, with or wi"
},
{
"path": "configure.ac",
"chars": 47192,
"preview": "dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)\nAC_PREREQ([2.60])\ndefine(_CLIENT_VERSION_MAJOR, 0)\ndefine(_CLIENT_VERSION_"
},
{
"path": "contrib/README.md",
"chars": 2109,
"preview": "Repository Tools\n---------------------\n\n### [Developer tools](/contrib/devtools) ###\nSpecific tools for developers worki"
},
{
"path": "contrib/bitcoin-cli.bash-completion",
"chars": 4749,
"preview": "# bash programmable completion for bitcoin-cli(1)\n# Copyright (c) 2012-2016 The Bitcoin Core developers\n# Distributed un"
},
{
"path": "contrib/bitcoin-qt.pro",
"chars": 756,
"preview": "FORMS += \\\n ../src/qt/forms/aboutdialog.ui \\\n ../src/qt/forms/addressbookpage.ui \\\n ../src/qt/forms/askpassphra"
},
{
"path": "contrib/bitcoin-tx.bash-completion",
"chars": 1657,
"preview": "# bash programmable completion for bitcoin-tx(1)\n# Copyright (c) 2016 The Bitcoin Core developers\n# Distributed under th"
},
{
"path": "contrib/bitcoind.bash-completion",
"chars": 1597,
"preview": "# bash programmable completion for bitcoind(1) and bitcoin-qt(1)\n# Copyright (c) 2012-2016 The Bitcoin Core developers\n#"
},
{
"path": "contrib/debian/README.md",
"chars": 607,
"preview": "\nDebian\n====================\nThis directory contains files used to package bitcoind/bitcoin-qt\nfor Debian-based Linux sy"
},
{
"path": "contrib/debian/bitcoin-qt.desktop",
"chars": 432,
"preview": "[Desktop Entry]\nVersion=1.0\nName=Bitcoin Core\nComment=Connect to the Bitcoin P2P Network\nComment[de]=Verbinde mit dem Bi"
},
{
"path": "contrib/debian/bitcoin-qt.install",
"chars": 273,
"preview": "usr/local/bin/bitcoin-qt usr/bin\nshare/pixmaps/bitcoin32.xpm usr/share/pixmaps\nshare/pixmaps/bitcoin16.xpm usr/share/pix"
},
{
"path": "contrib/debian/bitcoin-qt.lintian-overrides",
"chars": 107,
"preview": "# Linked code is Expat - only Debian packaging is GPL-2+\nbitcoin-qt: possible-gpl-code-linked-with-openssl\n"
},
{
"path": "contrib/debian/bitcoin-qt.manpages",
"chars": 21,
"preview": "doc/man/bitcoin-qt.1\n"
},
{
"path": "contrib/debian/bitcoin-qt.protocol",
"chars": 150,
"preview": "[Protocol]\nexec=bitcoin-qt '%u'\nprotocol=bitcoin\ninput=none\noutput=none\nhelper=true\nlisting=\nreading=false\nwriting=false"
},
{
"path": "contrib/debian/bitcoin-tx.bash-completion",
"chars": 46,
"preview": "contrib/bitcoin-tx.bash-completion\tbitcoin-tx\n"
},
{
"path": "contrib/debian/bitcoin-tx.install",
"chars": 33,
"preview": "usr/local/bin/bitcoin-tx usr/bin\n"
},
{
"path": "contrib/debian/bitcoin-tx.manpages",
"chars": 21,
"preview": "doc/man/bitcoin-tx.1\n"
},
{
"path": "contrib/debian/bitcoind.bash-completion",
"chars": 90,
"preview": "contrib/bitcoind.bash-completion\tbitcoind\ncontrib/bitcoin-cli.bash-completion\tbitcoin-cli\n"
},
{
"path": "contrib/debian/bitcoind.examples",
"chars": 29,
"preview": "debian/examples/bitcoin.conf\n"
},
{
"path": "contrib/debian/bitcoind.install",
"chars": 65,
"preview": "usr/local/bin/bitcoind usr/bin\nusr/local/bin/bitcoin-cli usr/bin\n"
},
{
"path": "contrib/debian/bitcoind.lintian-overrides",
"chars": 105,
"preview": "# Linked code is Expat - only Debian packaging is GPL-2+\nbitcoind: possible-gpl-code-linked-with-openssl\n"
},
{
"path": "contrib/debian/bitcoind.manpages",
"chars": 41,
"preview": "doc/man/bitcoind.1\ndoc/man/bitcoin-cli.1\n"
},
{
"path": "contrib/debian/changelog",
"chars": 18172,
"preview": "bitcoin (0.14.1-trusty4) trusty; urgency=medium\n\n * Re-enable UPnP support.\n\n -- Matt Corallo (BlueMatt) <matt@mattcora"
},
{
"path": "contrib/debian/compat",
"chars": 2,
"preview": "7\n"
},
{
"path": "contrib/debian/control",
"chars": 2744,
"preview": "Source: bitcoin\nSection: utils\nPriority: optional\nMaintainer: Matt Corallo <matt@mattcorallo.com>\nUploaders: Matt Corall"
},
{
"path": "contrib/debian/copyright",
"chars": 5752,
"preview": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: Bitcoin\nUpstream-Contact: Satos"
},
{
"path": "contrib/debian/examples/bitcoin.conf",
"chars": 5902,
"preview": "##\n## bitcoin.conf configuration file. Lines beginning with # are comments.\n##\n \n# Network-related settings:\n\n# Run on t"
},
{
"path": "contrib/debian/gbp.conf",
"chars": 102,
"preview": "# Configuration file for git-buildpackage and friends\n\n[DEFAULT]\npristine-tar = True\nsign-tags = True\n"
},
{
"path": "contrib/debian/patches/README",
"chars": 137,
"preview": "0xxx: Grabbed from upstream development.\n1xxx: Possibly relevant for upstream adoption.\n2xxx: Only relevant for official"
},
{
"path": "contrib/debian/patches/series",
"chars": 1,
"preview": "\n"
},
{
"path": "contrib/debian/rules",
"chars": 708,
"preview": "#!/usr/bin/make -f\n# -*- mode: makefile; coding: utf-8 -*-\n\n#DEB_MAKE_CHECK_TARGET = test_bitcoin\n#build/bitcoind::\n#\t$("
},
{
"path": "contrib/debian/source/format",
"chars": 12,
"preview": "3.0 (quilt)\n"
},
{
"path": "contrib/debian/watch",
"chars": 268,
"preview": "# Run the \"uscan\" command to check for upstream updates and more.\nversion=3\n# use qa.debian.org redirector; see man usca"
},
{
"path": "contrib/devtools/README.md",
"chars": 6505,
"preview": "Contents\n========\nThis directory contains tools for developers working on this repository.\n\ncheck-doc.py\n============\n\nC"
},
{
"path": "contrib/devtools/check-doc.py",
"chars": 1886,
"preview": "#!/usr/bin/env python\n# Copyright (c) 2015-2017 The Bitcoin Core developers\n# Distributed under the MIT software license"
},
{
"path": "contrib/devtools/check-rpc-mappings.py",
"chars": 5968,
"preview": "#!/usr/bin/env python3\n# Copyright (c) 2017 The Bitcoin Core developers\n# Distributed under the MIT software license, se"
},
{
"path": "contrib/devtools/clang-format-diff.py",
"chars": 6190,
"preview": "#!/usr/bin/env python\n#\n#===- clang-format-diff.py - ClangFormat Diff Reformatter ----*- python -*--===#\n#\n# "
},
{
"path": "contrib/devtools/commit-script-check.sh",
"chars": 1719,
"preview": "#!/bin/sh\n# Copyright (c) 2017 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompa"
},
{
"path": "contrib/devtools/copyright_header.py",
"chars": 22431,
"preview": "#!/usr/bin/env python3\n# Copyright (c) 2016-2017 The Bitcoin Core developers\n# Distributed under the MIT software licens"
},
{
"path": "contrib/devtools/gen-manpages.sh",
"chars": 1129,
"preview": "#!/bin/bash\n\nTOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)}\nSRCDIR=${SRCDIR:-$TOPDIR/src}\nMANDIR=${MANDIR:-$TOPDIR/d"
},
{
"path": "contrib/devtools/git-subtree-check.sh",
"chars": 2463,
"preview": "#!/bin/sh\n# Copyright (c) 2015 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompa"
},
{
"path": "contrib/devtools/github-merge.py",
"chars": 13969,
"preview": "#!/usr/bin/env python3\n# Copyright (c) 2016-2017 Bitcoin Core Developers\n# Distributed under the MIT software license, s"
},
{
"path": "contrib/devtools/lint-all.sh",
"chars": 584,
"preview": "#!/bin/bash\n#\n# Copyright (c) 2017 The Bitcoin Core developers\n# Distributed under the MIT software license, see the acc"
},
{
"path": "contrib/devtools/lint-python.sh",
"chars": 337,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2017 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accom"
},
{
"path": "contrib/devtools/lint-whitespace.sh",
"chars": 2682,
"preview": "#!/bin/bash\n#\n# Copyright (c) 2017 The Bitcoin Core developers\n# Distributed under the MIT software license, see the acc"
},
{
"path": "contrib/devtools/optimize-pngs.py",
"chars": 3391,
"preview": "#!/usr/bin/env python\n# Copyright (c) 2014-2017 The Bitcoin Core developers\n# Distributed under the MIT software license"
},
{
"path": "contrib/devtools/security-check.py",
"chars": 8220,
"preview": "#!/usr/bin/env python\n# Copyright (c) 2015-2017 The Bitcoin Core developers\n# Distributed under the MIT software license"
},
{
"path": "contrib/devtools/split-debug.sh.in",
"chars": 353,
"preview": "#!/bin/sh\n\nif [ $# -ne 3 ];\n then echo \"usage: $0 <input> <stripped-binary> <debug-binary>\"\nfi\n\n@OBJCOPY@ --enable-de"
},
{
"path": "contrib/devtools/symbol-check.py",
"chars": 6198,
"preview": "#!/usr/bin/env python\n# Copyright (c) 2014 Wladimir J. van der Laan\n# Distributed under the MIT software license, see th"
},
{
"path": "contrib/devtools/test-security-check.py",
"chars": 2644,
"preview": "#!/usr/bin/env python2\n# Copyright (c) 2015-2017 The Bitcoin Core developers\n# Distributed under the MIT software licens"
},
{
"path": "contrib/devtools/update-translations.py",
"chars": 8083,
"preview": "#!/usr/bin/env python\n# Copyright (c) 2014 Wladimir J. van der Laan\n# Distributed under the MIT software license, see th"
},
{
"path": "contrib/filter-lcov.py",
"chars": 916,
"preview": "#!/usr/bin/env python3\n\nimport argparse\n\nparser = argparse.ArgumentParser(description='Remove the coverage data from a t"
},
{
"path": "contrib/gitian-build.sh",
"chars": 11425,
"preview": "# Copyright (c) 2016 The Bitcoin Core developers\n# Copyright (c) 2018-2020 The Sugarchain Yumekawa developers\n# Distribu"
},
{
"path": "contrib/gitian-descriptors/gitian-linux.yml",
"chars": 6926,
"preview": "---\nname: \"sugarchain-linux-0.16\"\nenable_cache: true\nsuites:\n- \"trusty\"\narchitectures:\n- \"amd64\"\npackages:\n- \"curl\"\n- \"g"
},
{
"path": "contrib/gitian-descriptors/gitian-osx-signer.yml",
"chars": 1238,
"preview": "---\nname: \"sugarchain-dmg-signer\"\nsuites:\n- \"trusty\"\narchitectures:\n- \"amd64\"\npackages:\n- \"faketime\"\nremotes:\n- \"url\": \""
},
{
"path": "contrib/gitian-descriptors/gitian-osx.yml",
"chars": 5800,
"preview": "---\nname: \"sugarchain-osx-0.16\"\nenable_cache: true\nsuites:\n- \"trusty\"\narchitectures:\n- \"amd64\"\npackages:\n- \"ca-certifica"
},
{
"path": "contrib/gitian-descriptors/gitian-win-signer.yml",
"chars": 1242,
"preview": "---\nname: \"sugarchain-win-signer\"\nsuites:\n- \"trusty\"\narchitectures:\n- \"amd64\"\npackages:\n- \"libssl-dev\"\n- \"autoconf\"\nremo"
},
{
"path": "contrib/gitian-descriptors/gitian-win.yml",
"chars": 7385,
"preview": "---\nname: \"sugarchain-win-0.16\"\nenable_cache: true\nsuites:\n- \"trusty\"\narchitectures:\n- \"amd64\"\npackages:\n- \"curl\"\n- \"g++"
},
{
"path": "contrib/gitian-keys/Ghrog-pubkey.asc",
"chars": 3167,
"preview": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFx+iC8BEADBJfauZ0OKbWPhqmSt/4MyYJCyQjVLAXAp5eCdafHZ4Kf+v5y0\nGM2CW5DKw4EGwo9Ph"
},
{
"path": "contrib/gitian-keys/README.md",
"chars": 517,
"preview": "PGP keys\n========\n\nThis folder contains the public keys of developers and active contributors.\n\nThe keys are mainly used"
},
{
"path": "contrib/gitian-keys/cryptozeny-pubkey.asc",
"chars": 3163,
"preview": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFx5oUYBEADofZle3HTX9LX0e0+zr2z2AwJI5My6Mc/58sJSZBJbeZlGi6Pv\nRxCYRcoaTrK6rXRhr"
},
{
"path": "contrib/gitian-keys/decryp2kanon-pubkey.asc",
"chars": 3183,
"preview": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF4pIToBEADg6TzaVMjlYEm6wSgE5Zmu59Tga6VJxhtSko0TZJvtE0540N/3\n24wojrodZhxclvee1"
},
{
"path": "contrib/gitian-keys/ilmango-pubkey.asc",
"chars": 3130,
"preview": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF2bP6QBEADEJ3CeMqXgSHUsD+kMUtC8lsz7NDtWt5MO40LGO2aulYd7ox2b\nBE9fEXQnwhfknmluz"
},
{
"path": "contrib/init/README.md",
"chars": 318,
"preview": "Sample configuration files for:\n```\nSystemD: bitcoind.service\nUpstart: bitcoind.conf\nOpenRC: bitcoind.openrc\n b"
},
{
"path": "contrib/init/bitcoind.conf",
"chars": 2173,
"preview": "description \"Bitcoin Core Daemon\"\n\nstart on runlevel [2345]\nstop on starting rc RUNLEVEL=[016]\n\nenv BITCOIND_BIN=\"/usr/b"
},
{
"path": "contrib/init/bitcoind.init",
"chars": 1320,
"preview": "#!/bin/bash\n#\n# bitcoind The bitcoin core server.\n#\n#\n# chkconfig: 345 80 20\n# description: bitcoind\n# processname: bit"
},
{
"path": "contrib/init/bitcoind.openrc",
"chars": 2700,
"preview": "#!/sbin/openrc-run\n\n# backward compatibility for existing gentoo layout \n#\nif [ -d \"/var/lib/bitcoin/.bitcoin\" ]; then\n\t"
},
{
"path": "contrib/init/bitcoind.openrcconf",
"chars": 1067,
"preview": "# /etc/conf.d/bitcoind: config file for /etc/init.d/bitcoind\n\n# Config file location\n#BITCOIND_CONFIGFILE=\"/etc/bitcoin/"
},
{
"path": "contrib/init/bitcoind.service",
"chars": 719,
"preview": "# It is not recommended to modify this file in-place, because it will\n# be overwritten during package upgrades. If you w"
},
{
"path": "contrib/init/org.bitcoin.bitcoind.plist",
"chars": 367,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "contrib/install_db4.sh",
"chars": 2480,
"preview": "#!/bin/sh\n\n# Install libdb4.8 (Berkeley DB).\n\nset -e\n\nif [ -z \"${1}\" ]; then\n echo \"Usage: ./install_db4.sh <base-dir> "
},
{
"path": "contrib/linearize/README.md",
"chars": 3712,
"preview": "# Linearize\nConstruct a linear, no-fork, best version of the Bitcoin blockchain. The scripts\nrun using Python 3 but are "
},
{
"path": "contrib/linearize/example-linearize.cfg",
"chars": 1574,
"preview": "# sugarchaind RPC settings (linearize-hashes)\nrpcuser=rpcuser\nrpcpassword=rpcpassword\n#datadir=~/.sugarchain\nhost=127.0."
},
{
"path": "contrib/linearize/linearize-data.py",
"chars": 10223,
"preview": "#!/usr/bin/env python3\n#\n# linearize-data.py: Construct a linear, no-fork version of the chain.\n#\n# Copyright (c) 2013-2"
},
{
"path": "contrib/linearize/linearize-hashes.py",
"chars": 4588,
"preview": "#!/usr/bin/env python3\n#\n# linearize-hashes.py: List blocks in a linear, no-fork version of the chain.\n#\n# Copyright (c"
},
{
"path": "contrib/linearize/linearize.cfg",
"chars": 1549,
"preview": "# sugarchaind RPC settings (linearize-hashes)\nrpcuser=rpcuser\nrpcpassword=rpcpassword\n#datadir=~/.sugarchain\nhost=127.0."
},
{
"path": "contrib/macdeploy/LICENSE",
"chars": 35147,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "contrib/macdeploy/README.md",
"chars": 463,
"preview": "### MacDeploy ###\n\nFor Snow Leopard (which uses [Python 2.6](http://www.python.org/download/releases/2.6/)), you will ne"
},
{
"path": "contrib/macdeploy/custom_dsstore.py",
"chars": 3777,
"preview": "#!/usr/bin/env python\n# Copyright (c) 2013-2016 The Bitcoin Core developers\n# Distributed under the MIT software license"
},
{
"path": "contrib/macdeploy/detached-sig-apply.sh",
"chars": 1418,
"preview": "#!/bin/sh\n# Copyright (c) 2014-2015 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
},
{
"path": "contrib/macdeploy/detached-sig-create.sh",
"chars": 1534,
"preview": "#!/bin/sh\n# Copyright (c) 2014-2015 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
},
{
"path": "contrib/macdeploy/extract-osx-sdk.sh",
"chars": 1203,
"preview": "#!/bin/bash\n# Copyright (c) 2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accom"
},
{
"path": "contrib/macdeploy/fancy.plist",
"chars": 732,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "contrib/macdeploy/macdeployqtplus",
"chars": 36939,
"preview": "#!/usr/bin/env python\nfrom __future__ import division, print_function, unicode_literals\n#\n# Copyright (C) 2011 Patrick "
},
{
"path": "contrib/qos/README.md",
"chars": 445,
"preview": "### QoS (Quality of service) ###\n\nThis is a Linux bash script that will set up tc to limit the outgoing bandwidth for co"
},
{
"path": "contrib/qos/tc.sh",
"chars": 2569,
"preview": "# Copyright (c) 2017 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying\n# fi"
},
{
"path": "contrib/rpm/README.md",
"chars": 8261,
"preview": "RPM Spec File Notes\n-------------------\n\nThe RPM spec file provided here is for Bitcoin-Core 0.12.0 and builds on CentOS"
},
{
"path": "contrib/rpm/bitcoin.fc",
"chars": 458,
"preview": "/usr/bin/bitcoin-cli\t\t--\tgen_context(system_u:object_r:bitcoin_exec_t,s0)\n/usr/sbin/bitcoind\t\t--\tgen_context(system_u:ob"
},
{
"path": "contrib/rpm/bitcoin.if",
"chars": 2964,
"preview": "\n## <summary>policy for bitcoin</summary>\n\n\n########################################\n## <summary>\n##\tTransition to bitco"
},
{
"path": "contrib/rpm/bitcoin.spec",
"chars": 15462,
"preview": "%define bdbv 4.8.30\n%global selinux_variants mls strict targeted\n\n%if 0%{?_no_gui:1}\n%define _buildqt 0\n%define buildarg"
},
{
"path": "contrib/rpm/bitcoin.te",
"chars": 2091,
"preview": "policy_module(bitcoin, 1.100.1)\n\n########################################\n#\n# Declarations\n#\n\ntype bitcoin_t;\ntype bitco"
},
{
"path": "contrib/seeds/README.md",
"chars": 816,
"preview": "# Seeds\n\nUtility to generate the seeds.txt list that is compiled into the client\n(see [src/chainparamsseeds.h](/src/chai"
},
{
"path": "contrib/seeds/generate-seeds.py",
"chars": 4346,
"preview": "#!/usr/bin/env python3\n# Copyright (c) 2014-2017 Wladimir J. van der Laan\n# Distributed under the MIT software license, "
},
{
"path": "contrib/seeds/makeseeds.py",
"chars": 5485,
"preview": "#!/usr/bin/env python3\n# Copyright (c) 2013-2017 The Bitcoin Core developers\n# Distributed under the MIT software licens"
},
{
"path": "contrib/seeds/nodes_main.txt",
"chars": 227,
"preview": "51.89.173.178:34230\n62.141.69.219:34230\n89.175.21.60:34230\n139.99.68.221:34230\n150.95.139.225:34230\n155.138.139.97:34230"
},
{
"path": "contrib/seeds/nodes_test.txt",
"chars": 61,
"preview": "45.76.194.172:44230\n150.95.146.185:44230\n150.95.154.24:44230\n"
},
{
"path": "contrib/seeds/seeds_main.txt",
"chars": 3613,
"preview": "# 1seed.sugarchain.info\n# address good lastSuccess %(2h) %(8h) %(1d) %("
},
{
"path": "contrib/seeds/seeds_test.txt",
"chars": 794,
"preview": "# 1seed-testnet.cryptozeny.com\n# address good lastSuccess %(2h) %(8h) %(1"
},
{
"path": "contrib/testgen/README.md",
"chars": 270,
"preview": "### TestGen ###\n\nUtilities to generate test vectors for the data-driven Bitcoin tests.\n\nUsage: \n\n gen_base58_test_vec"
},
{
"path": "contrib/testgen/base58.py",
"chars": 2978,
"preview": "# Copyright (c) 2012-2017 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying"
},
{
"path": "contrib/testgen/gen_base58_test_vectors.py",
"chars": 4496,
"preview": "#!/usr/bin/env python\n# Copyright (c) 2012-2017 The Bitcoin Core developers\n# Distributed under the MIT software license"
},
{
"path": "contrib/tidy_datadir.sh",
"chars": 1597,
"preview": "#!/bin/bash\n# Copyright (c) 2013 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accom"
},
{
"path": "contrib/valgrind.supp",
"chars": 1213,
"preview": "# Valgrind suppressions file for Bitcoin.\n#\n# Includes known Valgrind warnings in our dependencies that cannot be fixed\n"
},
{
"path": "contrib/verify-commits/README.md",
"chars": 1149,
"preview": "Tooling for verification of PGP signed commits\n----------------------------------------------\n\nThis is an incomplete wor"
},
{
"path": "contrib/verify-commits/allow-revsig-commits",
"chars": 0,
"preview": ""
},
{
"path": "contrib/verify-commits/gpg.sh",
"chars": 2439,
"preview": "#!/bin/sh\n# Copyright (c) 2014-2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
},
{
"path": "contrib/verify-commits/pre-push-hook.sh",
"chars": 632,
"preview": "#!/bin/bash\n# Copyright (c) 2014-2015 The Bitcoin Core developers\n# Distributed under the MIT software license, see the "
},
{
"path": "contrib/verify-commits/trusted-git-root",
"chars": 0,
"preview": ""
},
{
"path": "contrib/verify-commits/trusted-keys",
"chars": 0,
"preview": ""
},
{
"path": "contrib/verify-commits/trusted-sha512-root-commit",
"chars": 0,
"preview": ""
},
{
"path": "contrib/verify-commits/verify-commits.sh",
"chars": 3523,
"preview": "#!/bin/sh\n# Copyright (c) 2014-2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
},
{
"path": "contrib/verifybinaries/README.md",
"chars": 1402,
"preview": "### Verify Binaries\n\n#### Preparation:\n\nMake sure you obtain the proper release signing key and verify the fingerprint w"
},
{
"path": "contrib/verifybinaries/verify.sh",
"chars": 5047,
"preview": "#!/bin/bash\n# Copyright (c) 2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accom"
},
{
"path": "contrib/windeploy/detached-sig-create.sh",
"chars": 1048,
"preview": "#!/bin/sh\n# Copyright (c) 2014-2015 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
},
{
"path": "contrib/windeploy/win-codesign.cert",
"chars": 6083,
"preview": "-----BEGIN CERTIFICATE-----\nMIIFTTCCBDWgAwIBAgIRALlW05RLwG2hMQMX5d/o5J8wDQYJKoZIhvcNAQELBQAw\nfTELMAkGA1UEBhMCR0IxGzAZBgN"
},
{
"path": "contrib/zmq/zmq_sub.py",
"chars": 3056,
"preview": "#!/usr/bin/env python3\n# Copyright (c) 2014-2017 The Bitcoin Core developers\n# Distributed under the MIT software licens"
},
{
"path": "contrib/zmq/zmq_sub3.4.py",
"chars": 3277,
"preview": "#!/usr/bin/env python3\n# Copyright (c) 2014-2017 The Bitcoin Core developers\n# Distributed under the MIT software licens"
},
{
"path": "depends/.gitignore",
"chars": 74,
"preview": "SDKs/\nwork/\nbuilt/\nsources/\nconfig.site\nx86_64*\ni686*\nmips*\narm*\naarch64*\n"
},
{
"path": "depends/README.md",
"chars": 2962,
"preview": "### Usage\n\nTo build dependencies for the current arch+OS:\n\n make\n\nTo build for another arch/OS:\n\n make HOST=host-p"
},
{
"path": "depends/builders/darwin.mk",
"chars": 1084,
"preview": "build_darwin_CC: = $(shell xcrun -f clang)\nbuild_darwin_CXX: = $(shell xcrun -f clang++)\nbuild_darwin_AR: = $(shell xcru"
},
{
"path": "depends/builders/default.mk",
"chars": 779,
"preview": "default_build_CC = gcc\ndefault_build_CXX = g++\ndefault_build_AR = ar\ndefault_build_RANLIB = ranlib\ndefault_build_STRIP ="
},
{
"path": "depends/builders/linux.mk",
"chars": 157,
"preview": "build_linux_SHA256SUM = sha256sum\nbuild_linux_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIM"
},
{
"path": "depends/config.guess",
"chars": 43993,
"preview": "#! /bin/sh\n# Attempt to guess a canonical system name.\n# Copyright 1992-2017 Free Software Foundation, Inc.\n\ntimestamp"
},
{
"path": "depends/config.site.in",
"chars": 2250,
"preview": "depends_prefix=\"`dirname ${ac_site_file}`/..\"\n\ncross_compiling=maybe\nhost_alias=@HOST@\nac_tool_prefix=${host_alias}-\n\nif"
},
{
"path": "depends/config.sub",
"chars": 36515,
"preview": "#! /bin/sh\n# Configuration validation subroutine script.\n# Copyright 1992-2017 Free Software Foundation, Inc.\n\ntimesta"
},
{
"path": "depends/description.md",
"chars": 2536,
"preview": "This is a system of building and caching dependencies necessary for building Bitcoin. \nThere are several features that m"
},
{
"path": "depends/funcs.mk",
"chars": 11821,
"preview": "define int_vars\n#Set defaults for vars which may be overridden per-package\n$(1)_cc=$($($(1)_type)_CC)\n$(1)_cxx=$($($(1)_"
},
{
"path": "depends/hosts/darwin.mk",
"chars": 621,
"preview": "OSX_MIN_VERSION=10.8\nOSX_SDK_VERSION=10.11\nOSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk\nLD64_VERSION=253.9\ndarwin_CC"
},
{
"path": "depends/hosts/default.mk",
"chars": 1165,
"preview": "ifneq ($(host),$(build))\nhost_toolchain:=$(host)-\nendif\n\ndefault_host_CC = $(host_toolchain)gcc\ndefault_host_CXX = $(hos"
},
{
"path": "depends/hosts/linux.mk",
"chars": 739,
"preview": "linux_CFLAGS=-pipe\nlinux_CXXFLAGS=$(linux_CFLAGS)\n\nlinux_release_CFLAGS=-O2\nlinux_release_CXXFLAGS=$(linux_release_CFLAG"
},
{
"path": "depends/hosts/mingw32.mk",
"chars": 275,
"preview": "mingw32_CFLAGS=-pipe\nmingw32_CXXFLAGS=$(mingw32_CFLAGS)\n\nmingw32_release_CFLAGS=-O2\nmingw32_release_CXXFLAGS=$(mingw32_r"
},
{
"path": "depends/packages/bdb.mk",
"chars": 1093,
"preview": "package=bdb\n$(package)_version=4.8.30\n$(package)_download_path=http://download.oracle.com/berkeley-db\n$(package)_file_na"
},
{
"path": "depends/packages/boost.mk",
"chars": 2024,
"preview": "package=boost\n$(package)_version=1_64_0\n$(package)_download_path=https://dl.bintray.com/boostorg/release/1.64.0/source/\n"
},
{
"path": "depends/packages/dbus.mk",
"chars": 809,
"preview": "package=dbus\n$(package)_version=1.10.18\n$(package)_download_path=https://dbus.freedesktop.org/releases/dbus\n$(package)_f"
},
{
"path": "depends/packages/expat.mk",
"chars": 548,
"preview": "package=expat\n$(package)_version=2.2.1\n$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R"
},
{
"path": "depends/packages/fontconfig.mk",
"chars": 1146,
"preview": "package=fontconfig\n$(package)_version=2.12.1\n$(package)_download_path=http://www.freedesktop.org/software/fontconfig/rel"
},
{
"path": "depends/packages/freetype.mk",
"chars": 613,
"preview": "package=freetype\n$(package)_version=2.7.1\n$(package)_download_path=http://download.savannah.gnu.org/releases/$(package)\n"
},
{
"path": "depends/packages/libICE.mk",
"chars": 670,
"preview": "package=libICE\n$(package)_version=1.0.9\n$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/\n$("
},
{
"path": "depends/packages/libSM.mk",
"chars": 680,
"preview": "package=libSM\n$(package)_version=1.2.2\n$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/\n$(p"
},
{
"path": "depends/packages/libX11.mk",
"chars": 647,
"preview": "package=libX11\n$(package)_version=1.6.2\n$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/\n$("
},
{
"path": "depends/packages/libXau.mk",
"chars": 613,
"preview": "package=libXau\n$(package)_version=1.0.8\n$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/\n$("
},
{
"path": "depends/packages/libXext.mk",
"chars": 596,
"preview": "package=libXext\n$(package)_version=1.3.2\n$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/\n$"
},
{
"path": "depends/packages/libevent.mk",
"chars": 795,
"preview": "package=libevent\n$(package)_version=2.1.8-stable\n$(package)_download_path=https://github.com/libevent/libevent/archive/\n"
},
{
"path": "depends/packages/libxcb.mk",
"chars": 1033,
"preview": "package=libxcb\n$(package)_version=1.10\n$(package)_download_path=http://xcb.freedesktop.org/dist\n$(package)_file_name=$(p"
},
{
"path": "depends/packages/miniupnpc.mk",
"chars": 1275,
"preview": "package=miniupnpc\n$(package)_version=2.0.20170509\n$(package)_download_path=http://miniupnp.free.fr/files\n$(package)_file"
},
{
"path": "depends/packages/native_biplist.mk",
"chars": 742,
"preview": "package=native_biplist\n$(package)_version=0.9\n$(package)_download_path=https://pypi.python.org/packages/source/b/biplist"
},
{
"path": "depends/packages/native_ccache.mk",
"chars": 564,
"preview": "package=native_ccache\n$(package)_version=3.3.4\n$(package)_download_path=https://samba.org/ftp/ccache\n$(package)_file_nam"
},
{
"path": "depends/packages/native_cctools.mk",
"chars": 3473,
"preview": "package=native_cctools\n$(package)_version=807d6fd1be5d2224872e381870c0a75387fe05e6\n$(package)_download_path=https://gith"
},
{
"path": "depends/packages/native_cdrkit.mk",
"chars": 769,
"preview": "package=native_cdrkit\n$(package)_version=1.1.11\n$(package)_download_path=http://distro.ibiblio.org/fatdog/source/600/c\n$"
},
{
"path": "depends/packages/native_ds_store.mk",
"chars": 639,
"preview": "package=native_ds_store\n$(package)_version=1.1.2\n$(package)_download_path=https://github.com/al45tair/ds_store/archive/\n"
},
{
"path": "depends/packages/native_libdmg-hfsplus.mk",
"chars": 610,
"preview": "package=native_libdmg-hfsplus\n$(package)_version=0.1\n$(package)_download_path=https://github.com/theuni/libdmg-hfsplus/a"
},
{
"path": "depends/packages/native_mac_alias.mk",
"chars": 730,
"preview": "package=native_mac_alias\n$(package)_version=2.0.6\n$(package)_download_path=https://github.com/al45tair/mac_alias/archive"
},
{
"path": "depends/packages/native_protobuf.mk",
"chars": 658,
"preview": "package=native_protobuf\n$(package)_version=2.6.1\n$(package)_download_path=https://github.com/google/protobuf/releases/do"
},
{
"path": "depends/packages/openssl.mk",
"chars": 2831,
"preview": "package=openssl\n$(package)_version=1.0.1k\n$(package)_download_path=https://www.openssl.org/source\n$(package)_file_name=$"
},
{
"path": "depends/packages/packages.mk",
"chars": 601,
"preview": "packages:=boost openssl libevent zeromq\nnative_packages := native_ccache\n\nqt_native_packages = native_protobuf\nqt_packag"
},
{
"path": "depends/packages/protobuf.mk",
"chars": 868,
"preview": "package=protobuf\n$(package)_version=$(native_$(package)_version)\n$(package)_download_path=$(native_$(package)_download_p"
},
{
"path": "depends/packages/qrencode.mk",
"chars": 596,
"preview": "package=qrencode\n$(package)_version=3.4.4\n$(package)_download_path=https://fukuchi.org/works/qrencode/\n$(package)_file_n"
},
{
"path": "depends/packages/qt.mk",
"chars": 10334,
"preview": "PACKAGE=qt\n$(package)_version=5.7.1\n$(package)_download_path=https://download.qt.io/archive/qt/5.7/$($(package)_version)"
},
{
"path": "depends/packages/xcb_proto.mk",
"chars": 667,
"preview": "package=xcb_proto\n$(package)_version=1.10\n$(package)_download_path=http://xcb.freedesktop.org/dist\n$(package)_file_name="
},
{
"path": "depends/packages/xextproto.mk",
"chars": 542,
"preview": "package=xextproto\n$(package)_version=7.3.0\n$(package)_download_path=http://xorg.freedesktop.org/releases/individual/prot"
},
{
"path": "depends/packages/xproto.mk",
"chars": 540,
"preview": "package=xproto\n$(package)_version=7.0.26\n$(package)_download_path=http://xorg.freedesktop.org/releases/individual/proto\n"
},
{
"path": "depends/packages/xtrans.mk",
"chars": 580,
"preview": "package=xtrans\n$(package)_version=1.3.4\n$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/\n$("
},
{
"path": "depends/packages/zeromq.mk",
"chars": 1117,
"preview": "package=zeromq\n$(package)_version=4.2.2\n$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($"
},
{
"path": "depends/packages/zlib.mk",
"chars": 868,
"preview": "package=zlib\n$(package)_version=1.2.11\n$(package)_download_path=http://www.zlib.net\n$(package)_file_name=$(package)-$($("
},
{
"path": "depends/packages.md",
"chars": 4868,
"preview": "Each recipe consists of 3 main parts: defining identifiers, setting build\nvariables, and defining build commands.\n\nThe p"
},
{
"path": "depends/patches/qt/mac-qmake.conf",
"chars": 1089,
"preview": "MAKEFILE_GENERATOR = UNIX\nCONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname abs"
},
{
"path": "doc/.gitignore",
"chars": 9,
"preview": "Doxyfile\n"
},
{
"path": "doc/Doxyfile.in",
"chars": 107182,
"preview": "# Doxyfile 1.8.12\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org)"
},
{
"path": "doc/README.md",
"chars": 3633,
"preview": "Bitcoin Core\n=============\n\nSetup\n---------------------\nBitcoin Core is the original Bitcoin client and it builds the ba"
},
{
"path": "doc/README_osx.md",
"chars": 5275,
"preview": "Deterministic OS X Dmg Notes.\n\nWorking OS X DMGs are created in Linux by combining a recent clang,\nthe Apple binutils (l"
},
{
"path": "doc/README_windows.txt",
"chars": 846,
"preview": "Bitcoin Core\r\n=============\r\n\r\nIntro\r\n-----\r\nBitcoin is a free open source peer-to-peer electronic cash system that is\r\n"
},
{
"path": "doc/REST-interface.md",
"chars": 4196,
"preview": "Unauthenticated REST Interface\n==============================\n\nThe REST API can be enabled with the `-rest` option.\n\nThe"
},
{
"path": "doc/assets-attribution.md",
"chars": 145,
"preview": "The list of assets used in the bitcoin source and their attribution can now be found in [contrib/debian/copyright](../co"
},
{
"path": "doc/benchmarking.md",
"chars": 2380,
"preview": "Benchmarking\n============\n\nBitcoin Core has an internal benchmarking framework, with benchmarks\nfor cryptographic algori"
},
{
"path": "doc/bips.md",
"chars": 9157,
"preview": "BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.16.0**):\n\n* [`BIP 9`](https://github.com/bitcoin/bips/b"
}
]
// ... and 1147 more files (download for full content)
About this extraction
This page contains the full source code of the sugarchain-project/sugarchain GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1347 files (16.8 MB), approximately 4.5M tokens, and a symbol index with 6408 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.